この記事はWeChatの公開アカウント「Programmer Bear」から転載したもので、著者はDineです。この記事を転載する場合は、プログラマーXiaoxiongの公式アカウントまでご連絡ください。 序文みなさんこんにちは。私はHuaweiのプログラマー、Xiao Xiongです。今日は、バイナリツリーに関連する高頻度の面接の質問を紹介します。この質問は、過去6か月間にGoogle、ByteDance、Microsoft、Amazonなどの大手企業で面接の質問として使用されました。それは、Likouの質問98 - バイナリ検索ツリーの検証です。 この記事では、主にこの問題を解決するための再帰と深さ優先探索の 2 つの方法を紹介します。参考になれば幸いです。 二分探索木の検証バイナリ ツリーのルートが与えられた場合、それが有効なバイナリ検索ツリーであるかどうかを判断します。 有効な二分探索木は次のように定義されます。 ノードの左のサブツリーには、現在のノードより小さい数値のみが含まれます。 ノードの右サブツリーには、現在のノードより大きい数値のみが含まれます。 すべての左および右のサブツリー自体もバイナリ検索ツリーである必要があります。 例1 例2とヒント 二分探索木タイトルは、有効な二分探索木の定義が次のようになることを示唆しています。
例例1 例1 例2 例3 二分探索木の判定上記の例の場合、二分探索木の判定方法によれば、上記の例が二分探索木であるかどうかは以下のように判定されます。
問題解決二分探索木の定義によれば、木が二分探索木であるかどうかを判断するには、各ノードが二分木の特性を満たしているかどうかを判断する必要があり、判断の根拠は同じであるため、再帰的な方法を使用してこの問題を解決できます。 再帰上記の判断の根拠(現在のノードに左と右の子ノードがあると仮定)は次のとおりです。
上記の考え方に基づいて、上限と下限を設定することで、ノードがバイナリ検索ツリーの特性を満たしているかどうかを判断できます。 上限と下限がある場合は、ノードが境界内にあるかどうかを判断します。境界内にない場合は、バイナリ検索ツリーではありません。境界内にない場合は、ノードの値を上限として使用し、左のサブツリーを再帰的に決定します。ノードの値を下限として使用し、右のサブツリーを再帰的に決定します。 知らせ空の木は二分探索木です。 コードを見せてくださいC
C++
ジャワ
Python3
Go言語
複雑性分析時間計算量: O(n)、ここで n はバイナリ ツリー ノードの数です。 空間計算量: O(n)。 深さ優先探索バイナリ検索木の特性によれば、バイナリ検索木に対して順序どおりのトラバーサルを実行すると、結果の配列は昇順になる必要があります。したがって、この特徴に基づいて、ツリーが二分探索ツリーであるかどうかを判断できます。 インオーダートラバーサルを使用する場合、バイナリツリーのすべてのノードの値を配列に格納し、配列が昇順になっているかどうかを判断します。手順は少し面倒です。 配列が昇順になっているかどうかを判断するには、配列の次の要素が前の要素より大きいかどうかを判断するだけで済みます。したがって、順序どおりにトラバーサルするときに前のノードの値を保存する変数を設定し、現在のノードの値が変数によって保存された値より大きいかどうかを判断できます。 大きくない場合は、ツリーがバイナリ検索ツリーではないことを意味します。それ以外の場合は、トラバースと判断を続けます。 コードを見せてくださいC++
ジャワ
複雑性分析時間計算量: O(n)、ここで n はバイナリ ツリー ノードの数です。 空間計算量: O(n)。 |
<<: 人工知能の時代において、ロボットを超える子どもたちが身につけるべき能力とは何でしょうか?
>>: 2050年の世界はどのようになっているでしょうか?新たなエネルギー源が出現し、人工知能が社会に浸透
著者 | リチャード・マクマナス企画 | ヤン・ジェンWeb3 は Web2 を打倒することはできま...
昨日、小米集団の創業者、雷軍氏は微博で、音声認識とAIの国際的専門家であり、音声認識オープンソースツ...
将来、旅行には自動運転車、食事にはプログラムされたスナックストリート、ヘアカットにはロボット理髪師、...
今年8月、ネイチャー誌に立て続けに掲載された2つの論文は、脳コンピューターインターフェースが言語回復...
IDC によると、世界のデータ量は 2018 年の 33ZB から 2025 年には 175ZB に...
人工知能革命の到来は、IBMの先駆的な研究者アーサー・サミュエルが世界初のコンピューターにチェッカー...
3月23日、360テクノロジー株式会社と華泰聯合証券はIPO上場指導契約を締結した。これは360がI...
[[318614]] [51CTO.com クイック翻訳] 2019年、世界中の意思決定者の53%が...
機械学習は急速に発展しています。実用的で高度な機械学習プロジェクトを見つけたい場合、第一の選択肢は ...
CNBCによると、7月29日、マイクロソフトは最近発表した財務報告書の中で、データセンターのサービス...
2009 年以来、雲奇会議は、最も初期のローカル ウェブサイト サミットから、アリババの年次戦略およ...
量子コンピューティングは、おそらく現在最もエキサイティングな(そして話題になっている)研究分野の 1...