为什么我不能在一条语句中获得BST的高度(Java)

tz179

我正在学习二叉搜索树,一个实践问题涉及递归地找到树的高度。

这是被接受的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 rootisnull表示您正在调用getHeight()root.left或者作为基础案例的树的叶子root.right哪里root

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我不能在for循环的第一条语句中包含2个变量

为什么我不能在IF语句中嵌套SUBSTITUTE?

为什么我在If语句中设置的变量不能在javascript中的if语句之外起作用?

为什么我不能在一行语句中设置T-SQL CONTXT_INFO变量?

SQL:为什么在一条语句中计算两个表的计数慢?

为什么分号在php的最后一条语句中是可选的?

为什么我不能在if-then语句中更改变量的值?

当我检查相等性时,为什么每个都不能在 if 语句中工作?

为什么我们不能在三元语句中使用“pass”?

为什么我不能在if语句中强制转换对象?

为什么我们不能在 switch 语句中使用关系表达式?

为什么不能在此if语句中使用我的变量?

SwiftUI-为什么我不能在if语句中使用Alert

为什么我不能在WHERE语句中使用变量?

为什么不能在switch语句中声明变量?

为什么不能在 if 语句中使用空指针?

为什么不能在if语句中声明变量?

为什么不能在DELETE语句中使用别名?

为什么不能在“ if”语句中的整数前加零

为什么我不能在C ++中的三元条件语句中使用“ break”语句?

为什么我的SQL语句只返回一条记录?

为什么我的“设置下一条语句”被禁用?

为什么我不能在另一个导入语句中使用作为别名导入的 python 中的模块?

python pandas:为什么我不能在同一个 read_csv 语句中同时使用 index_col 和 usecols ?提升值错误

为什么函数在C中返回一条语句?

为什么下一条语句在yield之前执行?

为什么我不能在 init 中获得我的 fetchedResults?

为什么我不能在 Visual Studio Code 的 return 语句中使用 EXIT_SUCCESS 而不是 0?

为什么 Rust NLL 不能在同一个语句中进行多次借用?