我试图理解递归程序 任何人请解释尺寸()的工作。怎么回来没有。节点递归。
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。节点?不是该节点的值。
请解释一下。
答案 0 :(得分:0)
size函数计算树中的节点数(完全独立于节点的值)。递归有效,因为如果树根为NULL,则返回0(基本情况)。如果根不是NULL,则它有一个左右子(两者都是树)。所以总大小将是左子树的大小(即大小(root->左))+右子树的大小(即.size(root->右))+根节点的大小(即1)。
答案 1 :(得分:0)
你的程序永远不会读取节点的值。而是在计算不。节点。
在达到null时返回0。当右计数和左子树中的所有节点都计数并返回最终总和时,它会加1。