Java 2-3-4棵树的高度

Java 2-3-4棵树的高度,java,tree,height,Java,Tree,Height,我有一个用于包含节点的常规树的工作代码段。现在我只需要摆弄它来处理2-3-4棵树,这应该更容易,因为每条路径都是相同的距离,因为它是平衡的,对吗 我可以使用的方法包括getNextChild(),split(),当然还有insert() 如果它是平衡的,你应该能够沿着树的一侧递归来确定高度。可以去掉左右深度,用一条线来得到下一个孩子吗?@John我认为这打破了树的概念,但是关于仅仅找到并返回高度,我走哪条路都不重要?如果它们都返回相同的值?@John我相信这是正确的,当然,除非您不正确地实现了2

我有一个用于包含节点的常规树的工作代码段。现在我只需要摆弄它来处理2-3-4棵树,这应该更容易,因为每条路径都是相同的距离,因为它是平衡的,对吗

我可以使用的方法包括
getNextChild()
split()
,当然还有
insert()


如果它是平衡的,你应该能够沿着树的一侧递归来确定高度。

可以去掉左右深度,用一条线来得到下一个孩子吗?@John我认为这打破了树的概念,但是关于仅仅找到并返回高度,我走哪条路都不重要?如果它们都返回相同的值?@John我相信这是正确的,当然,除非您不正确地实现了2-4树:)@Woot4Moo:B树中的外部节点根据定义总是具有相同的高度。应该添加一个检查以确保根不是null@Woot4Moo:捕获良好,已更新以进行不同的迭代(当树为空时,返回高度-1)。它可能是:
return++depth;
因此,如果深度为
1
则不返回
0。当只有根时,树的高度为0。这要么给了我一个超出范围的数组,要么经过一些轻微的调整,继续返回我2。我有接受intChildNum的getChild,或者是参数getParent永恒的。。
public int height() {
    return (height(root));
}

private int height(TNode localRoot) {
    if(localRoot == null) {
        return 0;
    }
    else {
       //Find each sides depth
       int lDepth = height(localRoot.leftChild);
       int rDepth = height(localRoot.rightChild);

       //Use the larger of the two
       return (Math.max(lDepth, rDepth) + 1);
    }
}
public int height ()
{
    TNode cur = root;
    int depth = -1;

    while ( cur != null )
    {
        cur = cur.getChild( 0 );
        depth++;
    }

    return depth;
}