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));
}