在 Javascript 二叉搜索树中搜索最小值和最大值

web developmentfront end technologyjavascript

在二叉搜索树中,如果我们查看左子节点始终小于父节点的属性,我们会发现,如果我们继续向左子节点迭代,直到到达没有左子节点的节点,我们基本上会找到 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;
}

相关文章