求二叉树的深度/求二叉树的节点数

本文介绍了通过递归算法来实现二叉树的深度(高度)计算及节点总数统计的方法。首先给出二叉树节点的数据结构定义,然后详细阐述了如何利用递归思想求得二叉树的深度与节点数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 求二叉树的深度/高度

思路:

递归解法:

1  如果二叉树为空,则树的深度为0(递归返回条件)

2  如果二叉树不为空,二叉树深度 =max{左子树节点个数+右子树节点的个数+1}

代码如下:

//  二叉树节点的数据结构
class treeNode
{
public:
	int value;
	treeNode *left;
	treeNode *right;
};
//   求二叉树的深度/高度
int getTreeDepth(treeNode *root)
{
	if (nullptr == root)  //  (1)树为空时,返回0;(2)递归返回条件;
		return 0;
	int leftSize = getTreeDepth(root->left);
	int rightSize = getTreeDepth(root->right);
	int ret = max(leftSize, rightSize) + 1;
	return ret;
}

2 求二叉树的节点数

思路:

递归解法:

1  如果二叉树为空,节点的个数为0(递归返回条件)

2  如果二叉树不为空,二叉树节点的个数 = 左子树节点个数+右子树节点的个数+1

代码如下:

//   求二叉树的节点数
int getTreeNodeCount(treeNode *root)
{
	if (nullptr == root)
		return 0;
	int leftCount = getTreeNodeCount(root->left);
	int rightCount = getTreeNodeCount(root->right);
	int ret = leftCount + rightCount + 1;
	return ret;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值