求助关于 Java 创建二叉树的问题
資深大佬 : lm66058 12
[输入形式]
首先输入一个 n ( 0 到 n-1 编号)表示树中节点的个数,接下来 n-1 行每行有两个整数 a,b,表示 a 是 b 的父亲(建树统一先建左孩子后建右孩子),最后分别输出前序,中序,后续遍历的编号(每种遍历结果占一行,每行每个编号之间有一个空格,输出的第一个编号前没有空格,输出的最后一个编号后没有空格)。例如:4 个节点,1 是 0 的左孩子,2 是 0 的右孩子,3 是 1 的左孩子。
[输出形式]
输出前、中、后序遍历结果
[样例输入]
4
0 1
0 2
1 3
[样例输出]
0 1 3 2
3 1 0 2
3 1 2 0
核心代码:
public class Tree { int data; Tree lChild = null; Tree rChild = null;
public Tree(int data) { this.data = data; } public Tree() { } public Tree CreatTree(Tree tree, int flag, int child) { Tree t; t = find(tree, flag); if (t.lChild != null) { t.rChild = new Tree(child); } else { t.lChild = new Tree(child); } return tree; } private Tree find(Tree t, int data) { Tree temp; if (t != null) { if (t.data == data) { return t; } else { if (t.lChild != null) { temp = find(t.lChild, data); return temp; } if (t.rChild != null) { temp = find(t.rChild, data); return temp; } } } return null; } public void PreOrderTree(Tree t) { if (t != null) { System.out.print(t.data + " "); PreOrderTree(t.lChild); PreOrderTree(t.rChild); } } public void InOrderTree(Tree t) { if (t != null) { InOrderTree(t.lChild); System.out.print(t.data + " "); InOrderTree(t.rChild); } } public void LaOrderTree(Tree t) { if (t != null) { LaOrderTree(t.lChild); LaOrderTree(t.rChild); System.out.print(t.data + " "); } }
}
为什么我的程序一直创建左子树不报错,创建右子树就会报空指针错误,求大神指点
大佬有話說 (6)