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

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树)。

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


总结

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

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

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

http://www.xdnf.cn/news/980.html

相关文章:

  • RabbitMQ常见面试题回答重点
  • HAL库(STM32CubeMX)——高级ADC学习、HRTIM(STM32G474RBT6)
  • 如何在邮件主题行中巧妙融入品牌特色?
  • 精准评估机器学习模型:从混淆矩阵到核心指标的深度解析+面试常见问题及解析(看这篇就够了)
  • 海事局发布《船舶智能监控系统技术指南(1.0)》,解读智驱力产品为何成为最佳选择!
  • 外键与多表关联查询
  • python-68-时间戳不一致的时间序列的可视化展示
  • 考研单词笔记 2025.04.21
  • Cpp实现window上cmd执行效果
  • 七种驱动器综合对比——《器件手册--驱动器》
  • RHCSA Linux系统 命令的解释器 – shell
  • 集成电路流片随笔17:jtag子模块1
  • 朴素贝叶斯(Naive Bayes)
  • 创建kaggle实现微调(kaggle创建)
  • 系分论文《论数据中台建设的分析和应用》
  • 每天五分钟机器学习:凸优化
  • 【MQ篇】初识MQ!
  • 使用Cloudflare加速网站的具体操作步骤
  • 进程和线程(1)
  • HyperDefect-YOLO:基于超图计算的工业缺陷检测算法解析
  • 关于综合能源服务认证证书的全解析专业认证团队
  • 小迪安全-112-yii反序列化链,某达oa,某商场,影响分析
  • MMIO、IOMAP 和 IOMMU 总结
  • 【Easylive】使用Seata解决分布式事务问题
  • Android 中实现 GIF 图片动画
  • three.js中的instancedMesh类优化渲染多个同网格材质的模型
  • 《AI大模型应知应会100篇》第31篇:大模型重塑教育:从智能助教到学习革命的实践探索
  • 【大数据、数据开发与数据分析面试题汇总(含答案)】
  • langchain +ollama +chroma+embedding模型实现RAG入门级Demo(python版)
  • 量化交易 - RSRS(阻力支撑相对强度)- 正确用法 - 年均收益18%