求二叉树的高度

思路

利用二叉树的结构特点和递归思路,先求出左树高度和右树高度,较高的子树 + 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;
}

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

相关推荐
w_zero_one几秒前
算法--构造
java·数据结构·算法
其实防守也摸鱼31 分钟前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
小超人诞生日记2 小时前
C++ 智能指针的使用及其原理详解
c++·算法
AiNightVision5 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.3336 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
小郎君6586 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
JJJennie7777 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
東隅已逝,桑榆非晚7 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
专注仿真7 小时前
卷积神经网络(CNN)算法详解
人工智能·python·算法·代码·大模型训练