使用javascript语言实现二叉排序树查找
时间: 2023-05-25 14:04:45 浏览: 61
二叉排序树是一种特殊的二叉树,它满足以下条件:
1. 对于每个节点,它的左子树中的所有节点的值都小于该节点的值;
2. 对于每个节点,它的右子树中的所有节点的值都大于该节点的值;
3. 左右子树也都是二叉排序树。
为了实现二叉排序树的查找,我们需要以下步骤:
1. 从根节点开始,比较要查找的值与当前节点的值的大小关系;
2. 如果要查找的值比当前节点的值小,则进入左子树继续查找;
3. 如果要查找的值比当前节点的值大,则进入右子树继续查找;
4. 如果要查找的值与当前节点的值相等,则找到目标节点,返回该节点。
下面是使用javascript语言实现二叉排序树查找的代码示例:
```javascript
class TreeNode {
constructor(val) {
this.val = val
this.left = null
this.right = null
}
}
class BinarySearchTree {
constructor() {
this.root = null
}
insert(val) {
const node = new TreeNode(val)
if (!this.root) {
this.root = node
} else {
let curr = this.root
while (true) {
if (val < curr.val) {
if (!curr.left) {
curr.left = node
break
} else {
curr = curr.left
}
} else if (val > curr.val) {
if (!curr.right) {
curr.right = node
break
} else {
curr = curr.right
}
} else {
break // 值已存在,不插入
}
}
}
}
search(val) {
let curr = this.root
while (curr) {
if (val === curr.val) {
return curr
} else if (val < curr.val) {
curr = curr.left
} else {
curr = curr.right
}
}
return null
}
}
// 示例
const bst = new BinarySearchTree()
bst.insert(5)
bst.insert(3)
bst.insert(7)
bst.insert(2)
bst.insert(4)
bst.insert(6)
bst.insert(8)
console.log(bst.search(6)) // TreeNode { val: 6, left: null, right: null }
console.log(bst.search(9)) // null
```
上面的代码中,使用了 `TreeNode` 类表示树节点,使用 `BinarySearchTree` 类表示二叉排序树。在插入节点时,如果插入的值已存在,则不插入。在查找节点时,如果找到则返回目标节点,否则返回 `null`。可以通过示例测试查找的正确性。