求二叉树的高度

思路

利用二叉树的结构特点和递归思路,先求出左树高度和右树高度,较高的子树 + 1(根节点也占了一个高度单位)就是本树的高度。

代码

代码1,严重的计算重复问题

cpp 复制代码
int TreeHeight(BTNode* root)
{
	if (root == NULL)
		return 0;

	return TreeHeight(root->left) > TreeHeight(root->right)
		? TreeHeight(root->left) + 1 : TreeHeight(root->right) + 1;
}

比较时计算了一遍,返回时又计算了一遍,更可怕的是每颗子树都有这样的问题,虽然代码简单,但重复问题非常严重。

代码2,记录结果,避免重复计算

cpp 复制代码
int TreeHeight(BTNode* root)
{
	if (root == NULL)
		return 0;

	int leftHeight = TreeHeight(root->left);
	int rightHeight = TreeHeight(root->right);

	return leftHeight > rightHeight ? leftHeight + 1 : rightHeight + 1;
}

比较时计算了一遍,这时把结果记录到变量里,返回时直接使用变量返回,没有重复计算。

代码3,fmax函数

cpp 复制代码
int TreeHeight(BTNode* root)
{
	if (root == NULL)
		return 0;

	return fmax(TreeHeight(root->left), TreeHeight(root->right)) + 1;
}

实参完成计算过程,传递给形参,形参直接用作返回,计算过程不重复。

相关推荐
203号居民15 小时前
LeetCode hot 100 — 25. K 个一组翻转链表
算法·leetcode·链表
ocean210316 小时前
2025-2026年AI算法与模型研发面试高频知识点洞察
人工智能·算法·面试
Nil20816 小时前
leetcode 78子集
数据结构·算法·leetcode
en.en..17 小时前
Linux fork() 工作原理
数据结构·算法
地平线开发者17 小时前
bevformer算法模型详细解读
算法
liliangcsdn18 小时前
ICIR权重矩阵如何加权标准化为综合因子
算法
SDWAN_Cheap18 小时前
SD-WAN智能选路技术的算法与实现机制
算法·php·sdwan
不会就选b19 小时前
数据结构之树&&二叉树(二)
数据结构·算法
渡之19 小时前
ArduPilot (APM)滤波器之SlewLimiter 深度解析
算法
zander25819 小时前
LeetCode 1143. 最长公共子序列
开发语言·python·算法