求解!!!急!!!设计一算法,计算给定二叉树T中度为2的结点个数。

如题所述

算法如下,将指向树的根节点的指针作为入参返回的即为度为2的全部结点的个数。
int countDegreeTwo(TreeNode *root)
{
if (root == NULL)
return 0;
if (root->left != NULL && root->right != NULL)
return 1 + countDegreeTwo(root->left) + countDegreeTwo(root->right);
return countDegreeTwo(root->left) + countDegreeTwo(root->right);
}追问

return 1 + countDegreeTwo(root->left) + countDegreeTwo(root->right);
return countDegreeTwo(root->left) + countDegreeTwo(root->right);
这两句可以是什么意思?初学,可以说明一下吗?

追答

    若当前子树的根结点是2度结点,则子树的2度结点数等于该子树根结点的左子树二度结点数加上右子树二度结点数再加1

    return 1 + countDegreeTwo(root->left) + countDegreeTwo(root->right);

    若当前子树的根节点不是2度结点,则子树的2度结点数等于该子树根结点的左子树二度结点数加上右子树二度结点数

     return countDegreeTwo(root->left) + countDegreeTwo(root->right);

温馨提示:内容为网友见解,仅供参考
无其他回答

求,编写递归算法,统计二叉树中度为2的结点个数(C语言)
int leafnum(Bnode *t){ int i,j;if( t == NULL )return 0;else if( t->lchild == NULL && t->rchild == NULL )return 1;else { i = leafnum(t->lchild);j = leafnum(t->rchild);return (i+j);} }...

度为2的结点数怎么计算啊?
结点的度是指,该结点的子树的个数,在二叉树中,不存在度大于2的结点。计算公式:n0=n2+1 n0 是叶子节点的个数 n2 是度为2的结点的个数 n0=n2+1=5+1=6 故二叉树有5个度为2的结点,则该二叉树中的叶子结点数为6。

在一棵二叉树中,度为2的结点数有多少个
完全二叉树除最后一层,其他层都是满结点的。所以这里总结点700个,这里是偶数,可以判断度为1的结点是1个。根据二叉树性质n0 = n2 + 1;叶子结点数量等于度为2的结点数+1 n0 + n1 + n2 = 700 n0 + n1 + n0 -1 =700;2n0 = 701 -n1 (完全二叉树度为1的结点个数要么1,要么0, 叶...

二叉树中,度为2的结点有几个?
具有10个叶子结点的二叉树中有9个度为2的结点。叶子结点个数=度为2的结点个数+1。一棵深度为k,且有2^k-1个结点的二叉树,称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且或者最后一层是满的,或者是在右边缺少连...

求一个关于求二叉树度为2的结点数 的算法
③当T是1度结点时,以T为根的二叉树中2度结点数为T的左或子树中2度结点数之和.其算法如下:int D2Nodes(BinTree T){ if(!T||!T->lchild&&!T->rchild) \/\/T为空或是叶子 return 0;if(T->lchild&&T->rchild) \/\/T是2度结点 return 1+D2Nodes(T->lchild)+D2Nodes(T->rchild);...

...根结点指针为T,请写出计算二叉树中度为2的结点数目的非递归算法...
采用深度或者广度遍历就可以,分别采用栈或者队列结构。对于访问到的每个节点,如果度为2,就是所求的。比如用栈的话 push(ST,root)while(not empty(ST)){ node=pop(ST)if(node->left)push(ST,node->left)if(node->right)push(ST,node->right)} 上面的伪代码实际上就是图的深度遍历,二叉树...

...假定在一棵二叉树中,度为2的结点数为15个,度为1的结点数为32个,则...
B。对于任何一颗二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则,n0=n2+1,叶子结点(终端结点)no=15+1=16。或:每个分枝下面都有一个结点,所以总结点数N=2*15+1*32+0*叶子数+1(根节点)=63 二叉树中除了双分支结点,单分支结点就是叶子结点 所以叶子数=63-15-32=16 ...

在二叉树中,度为2的叶子结点有多少个?
有500 个叶子结点。1、分析:完全二叉树有1000个结点,度为1的节点个数可能是0或1,若为0,则该题无解,所以显然不能为0了,若为1,则度为2的结点个数为499个,度为1的节点数为1,度为0的节点为500。2、用公式表示即为:1000 = n0+n1+n2 因n0 = n2+1还有完全二叉树分析得n1 = 1 ...

某二叉树中有n个叶子节点,则该二叉树中度为2的结点数为?
你好:这个一般都是填空题,答案:n+1 对任何一棵二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0=n2+1.设n1为二叉树T中度为1的结点数.因为二叉树中所有结点的度军小于或等于2,所以其结点总数为 n=n0+n1+n2 (1)再看二叉树中的分支数.除了根结点外,其余结点都有一个分支进入,...

若一棵二叉树有11个叶子结点,则该二叉树中度为2的结点个数是?
3、二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。

相似回答