java 二叉排序树找父节点
时间: 2023-10-13 11:28:08 浏览: 102
在二叉排序树中,每个节点都有一个左子树和右子树,且左子树所有节点的值都小于该节点,右子树所有节点的值都大于该节点。因此,如果要找到一个节点的父节点,可以从根节点开始比较,如果该节点的值小于当前节点,则去左子树中继续查找,如果该节点的值大于当前节点,则去右子树中继续查找,直到找到该节点或者找到一个叶子节点为止。
以下是在 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 或者找到一个叶子节点为止。
阅读全文