Javascriptバイナリ検索ツリーで最小値と最大値を検索する
二分探索木で、左の子が常に親よりも小さいというプロパティを見ると、左の子に向かって反復し続けると、子が残っていないノードの場合、基本的にBSTで最小の要素が見つかります。
この関数をコードに実装しましょう。今後は、関数の単一バージョン、つまり反復または再帰のいずれかのみを実装します。この場合、反復関数を作成します-
例
getMinVal() { if (this.root === null) { throw "Empty tree!"; } let currNode = this.root; while (currNode.left !== null) { currNode = currNode.left; } return currNode.data; }
-
を使用してこれをテストできます例
let BST = new BinarySearchTree(); BST.insertRec(10); BST.insertRec(15); BST.insertRec(5); BST.insertRec(50); BST.insertRec(3); BST.insertRec(7); BST.insertRec(12); console.log(BST.getMinVal());
出力
これにより、出力が得られます-
3
同様に、このコードを拡張して、右端の子の値を反復処理することで最大値を返すgetMaxVal()という関数を作成できます。確認のためにここにコードを配置します-
例
getMaxVal() { if (this.root === null) { throw "Empty tree!"; } let currNode = this.root; while (currNode.right !== null) { currNode = currNode.right; } return currNode.data; }
-
C ++のバイナリツリーで最大(または最小)を見つける
この問題では、二分木が与えられます。私たちのタスクは、バイナリツリーで最大(または最小)を見つけることです。 問題の説明: 二分木で最大値と最小値を持つ二分木のノードを見つける必要があります。 問題を理解するために例を見てみましょう。 入力: 出力: 最大=9、最小=1 ソリューションアプローチ 二分木の最大ノードを見つける必要があります。これを行うには、リーフノードに到達するまでポインタを移動し、ツリーの最大ノードを見つけます。 ソリューションの動作を説明するプログラム 例 #include <iostream> using namespace s
-
C++の二分木の最大合計BST
二分木ルートがあるとすると、二分探索木(BST)でもあるサブツリーのすべてのノードの最大合計を見つける必要があります。 したがって、入力が次のような場合、 その場合、出力は20になります。これは、選択したBST内のすべてのノードの合計です。 これを解決するには、次の手順に従います- Dataという1つのブロックを作成します。これには、sz、maxVal、minVal、ok、sumなどのメンバーが含まれます。また、この順序で取得するデータ用の初期化子を1つ定義します(sz、minVal、maxVal、ok、合計を0に設定) ret:=0 ソルブ()と呼ばれるメソッ