我首先找到高度,然后是k值我正在进行后期打印以打印元素,但它显示NullPointer异常,因为没有打印数据。
Java代码:
public void kDisplay(int k) {
auxkDisplay(root, k);
}
public void auxkDisplay(TreeNode root1, int k) {
int l = h(root1);
if (l - k == 0)
return;
System.out.print(root1.data + "-");
auxkDisplay(root1.left, k++);
auxkDisplay(root1.right, k++);
}
public int h(TreeNode current) {
TreeNode current1 = current;
if (current1 == null)
return -1;
int l = 1 + h(current1.left);
int r = 1 + h(current1.right);
return Math.max(l, r);
}
答案 0 :(得分:1)
你的问题出在这个递归中,你错过了一个基本案例:
public void auxkDisplay(TreeNode root1, int k) {
if(root1 == null) // to avoid calling null.left or null.right
return;
int l = h(root1);
if (l - k == 0)
return;
System.out.print(root1.data + "-");
auxkDisplay(root1.left, k++);
auxkDisplay(root1.right, k++);
}
如果你调用left或right node或root1而不检查当前的root1是否不等于null,那么在某个时候,leafs将没有任何子节点,因此传递leafs节点(null)将会结束调用null.left或null.right将导致NullPointerException