使用递归查找三元树的高度?

时间:2015-12-13 17:57:28

标签: java recursion

我正在试图找出如何获得三元树的最大高度,用于学校项目。对于使用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;

1 个答案:

答案 0 :(得分:1)

是的,这会有效。为了使它更具可读性,你可以写 -

height = 1 + Math.max(
              Math.max(
                    getHeight(node.getLeftChild()),
                    getHeight(node.getMidChild())
              ),
              getHeight(node.getRightChild())
         )       

不需要辅助变量。