树中的递归

时间:2013-12-28 11:00:14

标签: recursion

我试图理解递归程序  任何人请解释尺寸()的工作。怎么回来没有。节点递归。

int size(struct tree *root)  
  {   
     if (root==NULL)
      return 0;    
     else    
     {    
      return (size(root->left)+size(root->right)+1);   
     }
}:

在这个程序中,大小(root-> left),size(root-> right)将返回?

与阶乘计划一样

function factorial (x)    
{    
return (x * factorial(x-1) ) ;    
}    

在这个阶乘程序中它将返回4 * 3 * 2 * 1.如果我们计算阶乘(4)。
在上面的树程序中应该返回该节点的值。为什么它返回no。节点?不是该节点的值。 请解释一下。

2 个答案:

答案 0 :(得分:0)

size函数计算树中的节点数(完全独立于节点的值)。递归有效,因为如果树根为NULL,则返回0(基本情况)。如果根不是NULL,则它有一个左右子(两者都是树)。所以总大小将是左子树的大小(即大小(root->左))+右子树的大小(即.size(root->右))+根节点的大小(即1)。

答案 1 :(得分:0)

你的程序永远不会读取节点的值。而是在计算不。节点。

在达到null时返回0。当右计数和左子树中的所有节点都计数并返回最终总和时,它会加1。