题目:
思路:
需要特别主义的是,建立Node数组对象后,必须先对Node数组的每个元素分配内存/初始化,否则会报错,这个bug折磨了我一上午:
Exception in thread “main” java.lang.NullPointerException: Cannot assign field “parent” because “T[c[j]]” is null
at TreeDemo.main
也就是务必要注意这个部分的代码:
for(int i=0;i完整代码如下:
import java.io.BufferedInputStream; import java.util.Scanner; public class TreeDemo { public static class Node{ int parent, left, right; Node(int parent, int left, int right){ this.parent = parent; this.left = left; this.right = right; } } public static void main(String[] args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); System.out.println("请输入树的节点数:"); int n = cin.nextInt(); Node[] T = new Node[10000]; int[] D = new int[10000]; System.out.println("接下来,每行输入节点的编号id,度k,以及第1到第k个子节点的编号c1,c2...ck:"); for(int i=0;i输入:
请输入树的节点数: 13 接下来,每行输入节点的编号id,度k,以及第1到第k个子节点的编号c1,c2...ck: 0 3 1 4 10 1 2 2 3 2 0 3 0 4 3 5 6 7 5 0 6 0 7 2 8 9 8 0 9 0 10 2 11 12 11 0 12 0输出:
node 0: parent = -1, depth = 0, root, [1 4 10 ] node 1: parent = 0, depth = 1, internal node, [2 3 ] node 2: parent = 1, depth = 2, internal node, [] node 3: parent = 1, depth = 2, internal node, [] node 4: parent = 0, depth = 1, internal node, [5 6 7 ] node 5: parent = 4, depth = 2, internal node, [] node 6: parent = 4, depth = 2, internal node, [] node 7: parent = 4, depth = 2, internal node, [8 9 ] node 8: parent = 7, depth = 3, internal node, [] node 9: parent = 7, depth = 3, internal node, [] node 10: parent = 0, depth = 1, internal node, [11 12 ] node 11: parent = 10, depth = 2, internal node, [] node 12: parent = 10, depth = 2, internal node, []



