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