Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

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;
}

  1. C ++のバイナリツリーで最大(または最小)を見つける

    この問題では、二分木が与えられます。私たちのタスクは、バイナリツリーで最大(または最小)を見つけることです。 問題の説明: 二分木で最大値と最小値を持つ二分木のノードを見つける必要があります。 問題を理解するために例を見てみましょう。 入力: 出力: 最大=9、最小=1 ソリューションアプローチ 二分木の最大ノードを見つける必要があります。これを行うには、リーフノードに到達するまでポインタを移動し、ツリーの最大ノードを見つけます。 ソリューションの動作を説明するプログラム 例 #include <iostream> using namespace s

  2. C++の二分木の最大合計BST

    二分木ルートがあるとすると、二分探索木(BST)でもあるサブツリーのすべてのノードの最大合計を見つける必要があります。 したがって、入力が次のような場合、 その場合、出力は20になります。これは、選択したBST内のすべてのノードの合計です。 これを解決するには、次の手順に従います- Dataという1つのブロックを作成します。これには、sz、maxVal、minVal、ok、sumなどのメンバーが含まれます。また、この順序で取得するデータ用の初期化子を1つ定義します(sz、minVal、maxVal、ok、合計を0に設定) ret:=0 ソルブ()と呼ばれるメソッ