2010-10-17 140 views
-4

可能重复:
the # of internal nodes递归算法树

我正在当然,这是在CS数据结构。我有这个问题,要求提供递归算法,通过给定树的根节点来确定树的高度。 我将解释什么是树的根节点:

        root 
           /\ 
        internal node internal node 
         /\     \ 
      external node internal node  external node 
           /    
          external node 

什么我目前做的是:

  • 输入:INT R(R =根节点)T是树
  • 输出:整数H(H =树的高)
  • HIGHT(T,R):

  • 如果r为T的根节点然后

  • 回报1
  • 其他
  • ^h < --- 1
  • 为每个孩子w^T中的R做
  • ^h < ---最大(H,HIGHT(T,W))
  • 返回1 + H

,我到目前为止....

+8

请发表您到目前为止写的伪代码。人们通常不喜欢只为你写代码。 – 2010-10-18 00:02:13

+2

到目前为止你做了什么? – Woot4Moo 2010-10-18 00:02:30

+5

停止发布相同的问题一遍又一遍...... http://stackoverflow.com/questions/3943804/the-of-internal-nodes – Woot4Moo 2010-10-18 00:03:12

回答

2

由于这是作业,我不想放弃解决方案,但这里有一个有希望的帮助提示。

专注于树的最顶端,根节点和孩子正好在它下面。如果您知道子树的高度,那么如何帮助您计算父树的高度?

在你给了,想象一下你知道的高度(标有[方括号])子树和例子想找到根树的高度:

       root[?] 
          /\ 
       internal node[3] internal node[2] 
        /\     \ 
     external node internal node  external node 
          /    
         external node 

另一个提示是你的代码将具有以下结构,这是recursive programs通用的结构。您将有一个基本案例,然后归纳步骤其中您用较小的子问题表示您的问题。

int height(Node root) { 
    // The base case is that the node has no children, so it is a tree of height 1. 
    if (root has no children) return 1; 

    // Otherwise, apply the hint from above. Remember, you can call this height() 
    // function on the children of the root! 
} 
+0

输入:int r(r =根节点)T是树 输出:int h(h =树的高度) hight (T,R): 如果r为T的根节点然后 返回1否则 ħ <--- T中1 为每个子W R的做 ħ<---最大值(H, HIGHT(T,W)) 返回1 + H – Nofel 2010-10-18 02:54:40

+0

我写在Q中.. – Nofel 2010-10-18 02:55:05