この記事は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年の世界はどのようになっているでしょうか?新たなエネルギー源が出現し、人工知能が社会に浸透
プログラミング言語は流行ったり廃れたりするものですが、Java と C/C++ は変わりません。 [...
今日は顔をスキャンしましたか? [[373513]]人工知能の急速な発展により、知能の時代が静かに到...
世界大国として、中国と米国は多くの分野、特に科学技術分野で競争している。中国は科学技術分野で比較的目...
[[284002]]米国証券調査協会によると、インテルは昨日、最新のNervanaニューラルネット...
最近、Redis Cluster に注目していますが、これにはデータ分散の問題が関係しています。Re...
スティーブ・ジョブズの「電話の再発明」は携帯電話を再定義しただけでなく、世界を変え、人類をモバイルイ...
[[350388]]人工知能のトレンドの 1 つは、「クラウド」から「エッジ」へと急速に移行している...
今、シリコンバレーに新たな AI ユニコーンが誕生しました!この中国人女性科学者が設立した会社はIm...
新型コロナウイルス感染症のパンデミックによってもたらされた変化の中で、組織の業務が在宅勤務からリモー...
ニューラル アーキテクチャ検索は、常に高い計算能力の代表例と考えられてきました。微分可能アーキテクチ...