编写递归算法,统计二叉树中度为2的结点个数

如题所述

第1个回答  推荐于2017-10-02
有几种程序可以考虑一下:
【1】
int TwoBranch(Bitree T)
{
int s;
if(T == NULL)
return 0;
s = (T->lchild != NULL) && (T->rchild != NULL);
return s + TwoBranch(T->lchild) + TwoBranch(T->rchild);
}

【2】
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);
}
}
【3】
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);
}
第2个回答  2014-04-09
int TwoBranch(Bitree T)
{
int s;
if(T == NULL)
return 0;
s = (T->lchild != NULL) && (T->rchild != NULL);
return s + TwoBranch(T->lchild) + TwoBranch(T->rchild);
}

编写递归算法,统计二叉树中度为2的结点个数
int TwoBranch(Bitree T){ int s;if(T == NULL)return 0;s = (T->lchild != NULL) && (T->rchild != NULL);return s + TwoBranch(T->lchild) + TwoBranch(T->rchild);} 【2】int leafnum(Bnode *t){ int i,j;if(t==NULL)return 0;else if(t->lchild==NULL ...

求,编写递归算法,统计二叉树中度为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);} }...

...结点指针为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)} 上面的伪代码实际上就是图的深度遍历,二叉树...

设二叉树的存储结构为二叉链表,编写有关二叉树的递归算法:
(1)统计二叉树中度为1的结点个数。(2)统计二叉树中度为2的结点个数。(3)统计二叉树中度为0(叶结点)的结点个数。(4)统计二叉树的高度。(5)统计二叉树的宽度,即在二叉树的各层上,具有结点数最多的那一层上的结点总数。(6)从二叉树中删... 展开 972630969 | 浏览2043 次 |举报 我有更好的答案推荐...

求一个关于求二叉树度为2的结点数 的算法
分析:二叉树中2度结点数的递归定义为 ①当T为空或为叶子时,以T为根的二叉树的2度结点数为0;②当T是2度结点时,以T为根的二叉树的2度结点数为T的左右子树中2度结点数这和再加上T结点本身;③当T是1度结点时,以T为根的二叉树中2度结点数为T的左或子树中2度结点数之和.其算法如下:int D...

编写递归算法,求二叉树的结点个数和叶子数
return(0);} 法二:int LeafCount_BiTree(Bitree T)\/\/求二叉树中叶子结点的数目 { if(!T) return 0; \/\/空树没有叶子 else if(!T->lchild&&!T->rchild) return 1; \/\/叶子结点 else return Leaf_Count(T->lchild)+Leaf_Count(T->rchild);\/\/左子树的叶子数加 上右子树的叶子数 }\/...

数据结构算法设计——统计二叉树叶子结点的个数,并输出结果
{ if(A==NULL)return 0;else if(A->lchild==NULL&&A->rchild==NULL)return 1;else return NodeTree(A->lchild)+NodeTree(A->rchild);} int main(){ BiTree A;int b;printf("先序法赋值(空用#表示):");CreatTree(A);b=NodeTree(A);printf("共有%d个叶子节点\\n",b);} ...

编写递归算法,计算二叉树中叶子结点的数目。(C++)急!!!
CountLeaf(T->right);\/\/递归统计右子树叶子数目 } } return LeafNum;} \/\/用来测试的main函数,int main(){ BiTree T;int leafNum;cout<<"请输入中序遍历的二叉树序列(#号代表该结点为空):如(ABC##DE#G##F###)"<<endl;CreateBiTree(T);leafNum=CountLeaf(T);cout<<"该二叉树中...

编写一个递归算法,统计并返回以BT为树根指针的二叉树中的叶子结点的个...
当x=NULL f(x)=0;当x左右子树为空 f(x)=1;其他 f(x)=f(bt->lchild)+f(bt-rchild)--- int Count(BTreeNode *BT){ int l,r;if(BT==NULL) return 0;else if(BT->Lchild==NULL&&BT->Rchild==NULL) return 1;else { l=Count(BT->Lchild);r=Count(BT->Rchild);re...

二叉树算法是什么?
1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 + 1。二叉树算法常被用于实现二叉查找树和二叉堆。二叉树是每个节点最多有两个子树的有序树。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。

相似回答