public int getHeight() {
return heightFinder(root, 0);
}
这是一种递归方法,它可以实际计算出高度,将一条路径的计数与另一条路径的计数进行比较,然后从头开始选择较高的计数。
public int heightFinder(BTNode roo, int count) {
if(roo == null) {
return count--;
}
else
return (heightFinder(roo.getLeft(), count++) > heightFinder(roo.getRight(), count++)) ?
heightFinder(roo.getLeft(), count++) : heightFinder(roo.getRight(), count++);
}
最佳答案
问题是此代码:
heightFinder(roo.getLeft(), count++) > heightFinder(roo.getRight(), count++)) ?
heightFinder(roo.getLeft(), count++) : heightFinder(roo.getRight(), count++)
对于每个
heightFinder
调用,您执行count++
,这将增加count
并返回新值。假设
count
以0
开头(与第一次调用相同),您将把1
传递给第一个heightFinder
调用,将2
传递给第二个heightFinder
调用,然后将3
传递给第三次heightFinder
调用。另外,您应该真正记住前两个调用的值,而不是重新执行“ winning”分支。因为否则,您将遍历整棵树没有任何实际好处,但是那不会影响正确性,只会影响性能。