Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中如何获取avl树的高度_Java_Avl Tree - Fatal编程技术网

java中如何获取avl树的高度

java中如何获取avl树的高度,java,avl-tree,Java,Avl Tree,我试过这个函数 private int height(AVLNode t ) { return t == null ? -1 : t.height; } 我不知道这个方法做什么,有人能解释一下吗?它返回AVLNode的高度。如果AVLNode为null,则返回-1。如果AVLNode不为null,则返回AVLNode的高度。该方法返回AVLNode的高度,否则返回-1。行返回t==null-1:t.高度是一个 相当于 if (t == null) { return -1 } e

我试过这个函数

private int height(AVLNode t )
{
    return t == null ? -1 : t.height;
}

我不知道这个方法做什么,有人能解释一下吗?

它返回AVLNode的高度。如果AVLNode为null,则返回-1。如果AVLNode不为null,则返回AVLNode的高度。

该方法返回
AVLNode的高度,否则返回-1。行
返回t==null-1:t.高度
是一个

相当于

if (t == null) {
    return -1
} else {
    return t.height
}

默认方法是使用递归来确定高度

private int height(AVLNode t) {
    return t == null ? -1 : 1 + Math.max(height(t.left), height(t.right));
}

尽管对于更大的问题,您可以想象它是如何变慢的。这就是为什么在此节点初始化期间,最好使用其父节点的高度将高度保存为实例变量。但是对于OP所说的问题,这可能是一个可行的方法。我对函数的使用感到困惑,因为它是私有的,并且以一个节点作为参数。如果节点知道它们的高度,那么除了空树之外,为什么还要添加非空检查呢?但是,如果假定它只与t==root一起使用,那么为什么还要添加参数呢。所以我想我建议采用递归方法。
private int height(AVLNode t) {

        if (t == null) {
            return 0;
        }

        return 1 + Math.max((t.getLeft() != null ? t.getLeft().getHeight() : -1),
                (t.getRight() != null ? t.getRight().getHeight() : -1));

}