我正在学习二叉搜索树,一个实践问题涉及递归地找到树的高度。
这是被接受的Java代码:
public static int getHeight(Node root){
if (root == null)
return -1;
else {
int leftHeight = getHeight(root.left);
int rightHeight = getHeight(root.right);
if (leftHeight > rightHeight)
return leftHeight + 1;
else
return rightHeight + 1;
}
}
这是我最初尝试的代码(在本教程中为伪代码),认为可以工作:
public static int getHeight(Node root){
return 1 + Math.max(getHeight(root.left), getHeight(root.right));
}
但是,当我提交第二条语句时,它给了我运行时错误和NPE。是if (root == null){return -1};
一个基本情况是,第二个语句没有隐含有哪些?
是的,如果root
为nullroot.left
则被称为NPE。
递归函数需要一个基本情况,该基本情况不再被称为递归函数。在这里,when root
isnull
表示您正在调用getHeight()
,root.left
或者作为基础案例的树的叶子在root.right
哪里root
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句