java 二叉排序树找某个节点
时间: 2023-10-18 22:07:10 浏览: 92
以下是一个示例代码,用于在二叉排序树中查找某个节点:
```
public class BinarySearchTree {
private Node root;
public Node find(int key) {
Node current = root;
while (current != null) {
if (current.data == key) {
return current;
} else if (current.data > key) {
current = current.leftChild;
} else {
current = current.rightChild;
}
}
return null;
}
// 其他代码省略
}
class Node {
int data;
Node leftChild;
Node rightChild;
public Node(int data) {
this.data = data;
}
}
```
在上面的代码中,我们使用一个while循环来遍历二叉排序树,直到找到与给定键匹配的节点或遍历完整个树。如果找到了匹配的节点,则返回该节点;否则返回null。
相关问题
java 二叉排序树找父节点
在二叉排序树中,每个节点都有一个左子树和右子树,且左子树所有节点的值都小于该节点,右子树所有节点的值都大于该节点。因此,如果要找到一个节点的父节点,可以从根节点开始比较,如果该节点的值小于当前节点,则去左子树中继续查找,如果该节点的值大于当前节点,则去右子树中继续查找,直到找到该节点或者找到一个叶子节点为止。
以下是在 Java 中实现二叉排序树找父节点的代码:
```java
public TreeNode getParent(TreeNode root, TreeNode node) {
if (root == null || root == node) {
return null;
}
if ((root.left != null && root.left == node) || (root.right != null && root.right == node)) {
return root;
}
if (node.val < root.val) {
return getParent(root.left, node);
} else {
return getParent(root.right, node);
}
}
```
其中,TreeNode 表示二叉排序树的节点,包含一个 val 属性表示节点的值、left 属性表示左子树、right 属性表示右子树。
getParent 方法接收两个参数,一个是根节点 root,一个是要查找父节点的节点 node。如果 root 为 null 或者 root 就是要查找的节点 node,则直接返回 null。如果 node 是 root 的左子节点或者右子节点,则返回 root。否则,根据节点的值和 root 的值比较,如果 node 的值小于 root 的值,则去左子树中查找,否则去右子树中查找,直到找到 node 或者找到一个叶子节点为止。
java二叉排序树上找结点x的算法
在Java中,可以通过以下代码实现在二叉排序树上找结点x的算法:
```java
public Node search(Node root, int x) {
if (root == null || root.val == x) {
return root;
}
if (root.val > x) {
return search(root.left, x);
}
return search(root.right, x);
}
```
其中,Node表示二叉排序树的节点,val表示节点的值,left表示左子树,right表示右子树。该算法使用递归实现,在每个节点上比较节点的值与x的大小关系,继续查找左子树或右子树,直到找到节点值等于x的节点或遍历到叶子节点仍未找到。如果根节点为null或根节点的值等于x,则直接返回根节点。
阅读全文