求编写递归算法,统计二叉树中度为1的节点数目C语言

谢谢哟~

int Degree(BTree * t)
{
if(!t) //根节点为空
return 0;
else if (t->lchild == NULL && t->rchild == NULL)//只有根节点
return 0;
else if (t->lchild != NULL && t->rchild == NULL)//有左孩子没有右孩子
return 1+ Degree(t->lchild);
else if (t->lchild == NULL && t->rchild != NULL)//有右孩子没有左孩子
return 1 + Degree(t->rchild);
else if (t->lchild != NULL && t->rchild != NULL)//左右孩子都有
return Degree(t->lchild) + Degree(t->rchild);
}
手打,希望对你有帮助!
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-01
二叉树中度为1的就是叶子即使求叶子节点数
void left(BiTree T)
{
if ( T )
{if ((!T->lchild)&& (!T->rchild))
count++;
left(T->lchild);
left(T->rchild);
}
}
其中可以将count初始化为0即 int count=0;作为全局变量
我已经用过的不会错滴
望对你有帮助!!
第2个回答  2012-11-03
代码少一点的话,看这个
void Degree(BTree *t,int &count)

{
if(t)

{
if((t->left&&!t->right)||(!t->left&&t->right))

count++;

Degree(t->left,count);

Degree(t->right,count);

}
}

编写递归算法,计算二叉树中叶子结点的数目
int leafNum;cout<<"请输入中序遍历的二叉树序列(#号代表该结点为空):如(ABC##DE#G##F###)"<<endl;CreateBiTree(T);leafNum=CountLeaf(T);cout<<"该二叉树中叶子结点数为:"<<leafNum<<endl;return 0;}

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

编写一个递归算法,统计并返回以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...

编写递归算法,求二叉树的结点个数和叶子数
DLR(root->rchild); } 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);\/\/左子树的叶子数...

怎么用C语言写求一棵二叉树的叶子结点个数
只写函数,root是根节点 int LeafCount(node root){ int i;if(root){ i = !((root->lChild ? 1:0) | (root->rChild? 1:0));return i + LeafCount(root->lChild) + LeafCount(root->rChild);} return 0;}

求统计二叉树叶子结点数的递归算法
算法思想:对每个节点来说:1、如果它没有子节点,那么它就是叶子节点。2、如果它有子节点,那么它的叶子节点数量 = 左子树叶子节点数量 + 右子树叶子节点数量。算法代码:unsigned int getLeafCount(struct node* node){ if(node == NULL) return 0; if(node->left == NULL && node->...

...二叉树的存储表示,试用编写递归算法,统计二叉树中叶子结点的个数_百...
int count(Node *root) { if (!root) return 0;int ret = count(root->leftChild) + count(root->rightChild);return ret == 0 ? 1 : ret;} 第一行: 空指针返回0 第二行:统计左右子树的叶子节点个数 第三行:如果左右子树的叶子节点个数为0,则本身是一个叶子节点,返回1;否则返回...

求,编写递归算法,统计二叉树中度为2的结点个数(C语言)
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);} } ???这个应该不是你要的,希望对...

二叉树采用链式存储结构,设计一个递归算法设计一棵给定二叉树的所有结...
int Count(Bitree T)\/\/ 根结点指针T { int n = 0;if (T != NULL)n = 1 + Count(T->leftchild) + Count(T->rightchild);return n;}

用递归算法先序中序后序遍历二叉树
1、先序 void PreOrderTraversal(BinTree BT){ if( BT ){ printf(“%d\\n”, BT->Data); \/\/对节点做些访问比如打印 PreOrderTraversal(BT->Left); \/\/访问左儿子 PreOrderTraversal(BT->Right); \/\/访问右儿子 } } 2、中序 void InOrderTraversal(BinTree BT){ if(BT){ InOrde...

相似回答