不带参数的java中二叉树的高度

时间:2013-10-15 01:26:32

标签: java recursion height binary-search-tree treap

我知道有很多函数可以通过递归调用函数并使用节点的根作为参数每次为左右子树轻松获取二进制搜索树的高度。但是当我不在Treap上接受参数但它仍然返回一个int时,我应该做什么。我已经能够递归地调用其他方法,但我在此停止了。一些帮助将不胜感激!

这就是我所拥有的,但我基本上认为这是错误的

public int height()
{
    if(temp == null)
        return 0;
    else
    {
        temp = temp.left;
        temp = temp.right;
        return Math.max(height(), height()) + 1;
    }
}

1 个答案:

答案 0 :(得分:1)

由于您正在编写Java,因此无需显式传递参数:您可以“免费”获取一个参数 - 即方法调用的目标对象。

为此,需要在树节点对象上定义height()方法。现在方法定义很简单:为了让Node对象知道它的height(),它需要返回

  • 左侧和右侧子树的高度越大,加上节点本身的高度,或
  • 如果左侧和右侧子树都是null,则
  • 一个。