[输入形式]
首先输入一个 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 + " ");
}
}
}
为什么我的程序一直创建左子树不报错,创建右子树就会报空指针错误,求大神指点
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.