文章目录
引言:补充树的概念
节点的度:一个节点含有的子树的个数称为节点的度
叶节点或终端节点:度为0的节点称为叶节点
节点的层次:从根开始为第一层,以此类推
树的度:一个树中最大节点的度为树的度
树的深度或高度:树中节点最大的层次称为度
一、计算二叉树节点个数
int BTreeSize(BTNode* root)
{
//用前序来遍历
if (root == NULL)
return 0;
return BTreeSize(root->left) + BTreeSize(root->right) + 1;
}
int main()
{
BTNode* node1 = BuySTNode(1);
BTNode* node2 = BuySTNode(2);
BTNode* node3 = BuySTNode(3);
BTNode* node4 = BuySTNode(4);
BTNode* node5 = BuySTNode(5);
BTNode* node6 = BuySTNode(6);
node1->left = node2;
node1->right = node4;
node2->right = node5;
node2->left = node3;
node4->left = node6;
printf("%d", BTreeSize(node1));
return 0;
}
二、叶节点的个数
int BTreeLeafSize(BTNode* root)
{
if (root == NULL)
return 0;
if (root->left == NULL && root->right == NULL)
return 1;
return BTreeLeafSize(root->left) + BTreeLeafSize(root->right);
}
递归思路如下