この記事は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年の世界はどのようになっているでしょうか?新たなエネルギー源が出現し、人工知能が社会に浸透
DeepMindとカリフォルニア州サンフランシスコの人工知能研究所は、マルチプレイヤーリアルタイム戦...
近年、民間ドローンの急速な普及は、空中撮影、レジャーや娯楽、農作物の保護、電力検査など、人々の生産と...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
オープンソースのアルパカ モデル LLaMA コンテキストは、1 つの簡単な変更だけで GPT-4 ...
2023 年には、IT ネットワーキング分野でいくつかの重要なトレンドが流行するでしょう。大まかに...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
[51CTO.comからのオリジナル記事]最近、UiPathとSF Supply Chainは共同オ...
ゲスト | 張潔インタビュー | 張小南編集者 | 徐潔成制作:51CTO テクノロジースタック(W...
調査データによると、過去18か月間、企業はさまざまな緊急事態に対応するために技術革新のペースを加速さ...
2011年、Google DeepMindの共同創設者であるシェーン・レッグは、2028年までにAI...
偉大な将軍の名声の裏には、数え切れないほどの兵士たちの援助がある。この声明は自動運転の分野にも当ては...
マイクロソフトは7月27日、NaturalSpeech2という音声モデルを発表しました。このモデルは...