如何递归地找到二叉树中节点高度的总和?
例子:
public int totalHeight() {
return totalHeight(root);
}
private int totalHeight(BinaryNode<AnyType> n) {
int totalHeight = 0;
if (n.left == null && n.right == null)
return totalHeight;
if (n.left != null && n.right != null)
return totalHeight + 1
+ Math.max(totalHeight(n.left), totalHeight(n.right));
if (n.left != null)
return totalHeight + 1 + Math.max(totalHeight(n.left), -1);
if (n.right != null)
return totalHeight + 1 + Math.max(-1, totalHeight(n.right));
return totalHeight;
}
我试过这个,但它只得到树的高度而不是所有节点高度的总和。
我觉得很难在递归中跟踪计数器,似乎totalHeight
每次递归调用都设置为0。情况不妙。