寻找父节点,实现过程如下所示:
package cn.edu.nwu.structs.tree;
/**
* @author jcm
* 找父节点
* 时间 2016年9月1日
*/
public class GetFatherTreeNode {
public static int father = -1;
public static void main(String[] args) {
BinaryTreeNode root = CreateBinaryTree.createBinaryTree();
show(root,1);
getFatherTreeNode(root,4);
System.out.println(father);
}
/**
* @author jcm
* 找该节点的父节点,并且打印
* @param root
* @param data
*/
public static void getFatherTreeNode(BinaryTreeNode root,int data){
if(root == null){
return;
}
//如果找到该节点,则把父节点的数据复制给全局变量
if(root.leftTreeNode != null && root.leftTreeNode.data == data){
father = root.data;
}
if(root.rightTreeNode != null && root.rightTreeNode.data == data){
}
//递归调用
getFatherTreeNode(root.leftTreeNode,data);
getFatherTreeNode(root.rightTreeNode,data);
}
public static void show(BinaryTreeNode root, int n) {
if (root == null) {
return;
} else {
show(root.leftTreeNode, n + 1);
for (int i = 0; i < n; i++) {
System.out.print(" ");
}
System.out.println(root.data);
show(root.rightTreeNode, n + 1);
}
}
}