当前位置: 首页 > news >正文

C++算法(10):二叉树的高度与深度,(C++代码实战)

引言

在二叉树的相关算法中,高度(Height)深度(Depth)是两个容易混淆的概念。本文通过示例和代码实现,帮助读者清晰区分二者的区别。


定义与区别

属性定义计算方式
深度从根节点到该节点的边数根节点深度为0
高度从该节点到最远叶子节点的边数叶子节点高度为0

核心区别

  • 深度是自上而下从根节点到当前节点的路径长度。

  • 高度是自下而上从当前节点到最远叶子节点的路径长度。

  • 树的高度等于根节点的高度,也等于树的最大深度。


示例与表格

以下图二叉树为例:

       A/   \B     C/       \D         E

各节点的属性如下表:

节点深度高度
A02
B11
C11
D20
E20

C++实现

1. 树节点定义

struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

2. 计算高度(递归)

int height(TreeNode* root) {if (!root) return -1; // 空节点高度为-1return 1 + max(height(root->left), height(root->right));
}

3. 计算深度(递归搜索)

int depth(TreeNode* root, TreeNode* target) {if (!root) return -1; // 未找到目标if (root == target) return 0; // 找到目标,深度为0int left = depth(root->left, target);if (left != -1) return left + 1; // 左子树中找到,深度+1int right = depth(root->right, target);return (right != -1) ? right + 1 : -1;
}

注意事项

  1. 定义差异:某些场景中,深度和高度的计算可能基于节点数而非边数。例如:

    • 根节点深度为1,叶子节点高度为1。

    • 此时树的高度等于最大深度,需调整代码逻辑。

  2. 应用场景

    • 高度常用于平衡二叉树判断(如AVL树)。

    • 深度常用于路径问题(如最大深度)。


总结

  • 高度关注当前节点到叶子的最长路径。

  • 深度关注根节点到当前节点的路径。

  • 代码实现需根据具体定义调整边界条件。

相关文章:

  • Java 泛型使用教程
  • Netty前置基础知识之BIO、NIO以及AIO理论详细解析和实战案例
  • 使用PyTorch实现图像增广与模型训练实战
  • RESTful学习笔记(二)---简单网页前后端springboot项目搭建
  • uni-app 状态管理深度解析:Vuex 与全局方案实战指南
  • 【C++软件实战问题排查经验分享】UI界面卡顿 | CPU占用高 | GDI对象泄漏 | 线程堵塞 系列问题排查总结
  • 如何维护技术文档的持续更新?
  • 【Unity笔记】Unity音视频播放监听器封装笔记:VideoPlayer + AudioSource事件触发与编辑器扩展
  • 微软Entra新安全功能引发大规模账户锁定事件
  • GeoAI技术内涵与城市计算
  • 目标检测:视觉系统中的CNN-Transformer融合网络
  • 从代码学习深度学习 - 学习率调度器 PyTorch 版
  • Vue-组件的懒加载,按需加载
  • PyCharm 初级教程:从安装到第一个 Python 项目
  • git远程分支重命名(纯代码操作)
  • 大模型基础
  • 学习深度学习是否要先学习机器学习?工程师的路径选择策略
  • 重构・协同・共生:传统代理渠道数字化融合全链路解决方案
  • 基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战
  • 一段式端到端自动驾驶:VAD:Vectorized Scene Representation for Efficient Autonomous Driving
  • 民生访谈|“AI推广是把学生教聪明还是教笨了?这个问题必须回答好”
  • 南京信息工程大学商学院讲师李玮玮逝世,终年45岁
  • 竹子砍了地却种不上,贵州赤水被指“整改复耕”存形式主义
  • “棉花糖爸爸”陈生梨:女儿将落户到贵州纳雍
  • 俄“联盟MS-26”载人飞船安全返回地球
  • 澳门世界杯“中日对决”,蒯曼击败伊藤美诚晋级女单决赛