数据结构问题,求解 设计算法,统计二叉树中结点个数。

2024-11-15 22:31:25
推荐回答(2个)
回答(1):

typedef struct BiNode{
TElemType data;
struct BiNode *lchild,*rchild; //左、右孩子指针
}BiNode,*BiTree;
int NodeCount(BiTree T){
if(T == NULL ) return 0;//如果是空树,则结点个数为0;
else return NodeCount(T->lchild)+NodeCount(T->rchild)+1;
//结点个数为左子树的结点个数+右子树的结点个数再+1
}

回答(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);
}