首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

计算二叉树中双分支结点个数递归过程解决思路

2012-03-12 
计算二叉树中双分支结点个数递归过程这是一个计算二叉树中双分支结点个数的算法,对于这个算法不是很理解,

计算二叉树中双分支结点个数递归过程
这是一个计算二叉树中双分支结点个数的算法,对于这个算法不是很理解,设置断点调试了许久还是不能理解透,特别是那个n,为什么要这样设......这个递归过程是怎样的,最好能列一个表(root结点,栈中结点,n,a,b,c)
int TwoDegreeCount(BTNode *root)
{
int n=0;
if(root==NULL) 
return 0;
if(root->left!=NULL && root->right!=NULL) 
n=1;
int a=TwoDegreeCount(root->left) ;
int b=TwoDegreeCount(root->right);
int c=n+a+b;
return c;
}

下面这个是原代码,为了方便调试才改成上面那样的
int TwoDegreeCount(BTNode *root)
{
int n=0;
if(root==NULL) 
return 0;
if(root->left!=NULL && root->right!=NULL) 
n=1;
return n + TwoDegreeCount(root->left) + TwoDegreeCount(root->right);
}

[解决办法]
一个典型的递归算法,从root起分别往左往右递归。自己多体会体会。
[解决办法]
递归你就把这个函数再运行一遍就知道了。求二叉树的深度也是这样的。
twoDegreeCount(left)的调用过程你自己运行一下(脑子里想一下过程,把递归调用函数的树形结构画出来)
楼主加油

热点排行