如何在树中使用递归

时间:2017-03-03 17:49:08

标签: algorithm recursion data-structures

我是数据结构中树概念的新手。我可以为简单的树问题编写一个线性代码,但是当我尝试将其转换为递归代码时,我非常挣扎。我无法为复杂的树问题编写递归代码。但我知道树的运作方式。当我尝试将线性代码转换为问题的递归时,我遇到了问题"找到树的高度" 我可以画它并想象纸上的流动。但我无法写一个递归。

2 个答案:

答案 0 :(得分:4)

这里的关键是要理解树的每个节点本身就是一棵树。实际上,这是允许您实现递归算法的原因。您可能知道,任何递归算法都需要两部分:

  1. 停止标准。在这种情况下,我们将空(null)树的高度定义为0。
  2. 递归部分。在这种情况下,我们可以说树的高度是1加上其最深的孩子的高度。
  3. 因此,例如,如果我们在Java中实现它:

    DataFrame

答案 1 :(得分:1)

任何节点的高度,是其“最高”子节点的高度+ 1.因此,从根开始,您递归调用每个子节点上的查找高度函数,选择最大值,添加1,然后返回值。基本情况是没有子节点的节点,在这种情况下返回0。