递归计算二叉树的叶子节点数量

递归计算二叉树的叶子节点数量

设计思路

  • 首先肯定是需要遍历整个树,直到叶子节点为止,确定好递归的终止条件。
  • 叶子节点就是左右子树都为NULL作为判断条件

代码展示


//计算一颗二叉树的所有叶子节点的数量,可以采用递归实现
int BinaryTree_CountLeafNode(Tnode_t *root)
{
	int n1,n2; //n1记录左子树叶子节点,n2记录右子树叶子结点

	//1.递归函数必须提前写好终止条件
	if (NULL == root)
	{
		//说明是空树,则直接返回0
		return 0;
	}
	else if(root->lchild == NULL && root->rchild == NULL)
	{
		//说明只有一个根节点,则根节点就是叶子节点
		return 1;
	}
	else
	{
		//说明是有子树的二叉树,则需要计算左子树的叶子节点和右子树的叶子节点
		n1 = BinaryTree_CountLeafNode(root->lchild);
		n2 = BinaryTree_CountLeafNode(root->rchild);
	}

	return n1+n2;
}

posted @ 2025-05-14 20:42  Arroyol  阅读(58)  评论(0)    收藏  举报