编写JAVA程序,获取二叉树上某个节点的父级节点值
时间: 2024-05-05 11:20:34 浏览: 62
可以通过在二叉树中遍历节点来获取其父节点的值。具体地,可以先找到要求的节点,然后在遍历的过程中记录该节点的父节点的值,直到遍历完整棵树或找到要求的节点为止。
以下是一个示例代码:
```java
public class BinaryTree {
Node root;
// 内部类,表示二叉树节点
class Node {
int data;
Node left, right;
Node(int data) {
this.data = data;
left = right = null;
}
}
// 找到给定节点的父节点的值
public int findParentValue(Node node, int value) {
// 如果给定节点为空,则返回 -1,表示找不到父节点
if (node == null) {
return -1;
}
// 如果给定节点的左子节点或右子节点的值等于要求的值,则返回该节点的值
if ((node.left != null && node.left.data == value) ||
(node.right != null && node.right.data == value)) {
return node.data;
}
// 否则在左子树和右子树中分别查找
int parentValue = findParentValue(node.left, value);
if (parentValue != -1) {
return parentValue;
}
return findParentValue(node.right, value);
}
// 测试代码
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
tree.root = tree.new Node(1);
tree.root.left = tree.new Node(2);
tree.root.right = tree.new Node(3);
tree.root.left.left = tree.new Node(4);
tree.root.left.right = tree.new Node(5);
tree.root.right.left = tree.new Node(6);
tree.root.right.right = tree.new Node(7);
int value = 5;
int parentValue = tree.findParentValue(tree.root, value);
System.out.println("Value " + value + "'s parent value is: " + parentValue);
}
}
```
输出结果为:Value 5's parent value is: 2
可以看到,该代码先构造了一个二叉树,然后调用 findParentValue 方法获取给定节点的父节点的值。在这个例子中,我们要求节点 5 的父节点的值,最终结果是节点 2 的值。
阅读全文