【问题标题】:Finding the height of a Ternary Tree using recursion?使用递归查找三叉树的高度?
【发布时间】:2015-12-14 13:56:19
【问题描述】:

我正试图弄清楚如何为学校项目获得三元树的最大高度。对于二叉树,使用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;

【问题讨论】:

  • 试试看是否有效
  • 是的,它应该给你正确的结果。但我不确定是否有任何其他版本会“更好”。

标签: java recursion


【解决方案1】:

是的,这会起作用。为了使其更具可读性,您可以编写 -

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

不需要辅助变量。

【讨论】:

  • 不是缺少一些括号吗?
  • 是的,它缺少三个左右,但显然编辑需要六个字符长,因此需要添加一些不必要的东西来修复它。
  • 是的,很抱歉,依赖编辑来处理这些东西的陷阱。即使将它分成多行也无济于事。编辑:固定
猜你喜欢
  • 1970-01-01
  • 2019-05-18
  • 2018-09-16
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 2016-07-24
相关资源
最近更新 更多