我正在试图找出如何获得三元树的最大高度,用于学校项目。对于使用Math.max()
的二叉树来说很简单,但我在努力解决如何与三个孩子做同样的事情。下面是我到目前为止,但我还没有能够编译,我不确定我的逻辑是否合理。这会有用吗?将左/右孩子比较放入临时变量会更好吗?
private int getHeight(TernaryNode<T> node) {
int height = 0;
if (node != null) {
height = Math.max(getHeight(node.getLeftChild()), getHeight(node.getRightChild()));
height = 1 + Math.max(height, getHeight(node.getMidChild()));
}
return height;
答案 0 :(得分:1)
是的,这会有效。为了使它更具可读性,你可以写 -
height = 1 + Math.max(
Math.max(
getHeight(node.getLeftChild()),
getHeight(node.getMidChild())
),
getHeight(node.getRightChild())
)
不需要辅助变量。