二叉树的深度与高度

参考

定义

以边为度量

  • 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数
  • 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数
    以结点为度量(力扣使用的)
  • 二叉树节点的深度:指从根节点到该节点的最长简单路径结点的个数。【从上到下】
  • 二叉树节点的高度:指从该节点到叶子节点的最长简单路径结点的个数。【从下到上】

因为求深度可以从上到下去查 所以需要前序遍历(中左右),而高度只能从下到上去查,所以只能后序遍历(左右中)
在这里插入图片描述

<think>好的,用户想了解二叉树深度高度的概念区别,包括它们的定义和计算方法。我需要结合提供的引用资料来组织回答。 首先,根据引用[3]和[4],深度高度是相反的概念。深度是从根节点往下数到某个节点,而高度是从该节点往上数到最远的叶子节点。所以根节点的深度是1,而叶子节点的高度是1。同时,整个树的深度高度是相等的,但具体到单个节点,它们的深度高度可能不同。 接下来,需要解释定义的区别。引用[4]提到,深度是根节点到该节点的边数,而高度是该节点到叶子节点的最长路径边的条数。例如,根节点的深度为1(如果按节点数计算的话,可能不同定义会有差异,但通常边数的话根节点深度是0,但根据引用中的例子,用户这里可能按照节点数计算,需要确认)。但根据引用[3],深度是根到节点的距离,高度是节点到叶子的距离。可能不同的资料有不同的定义方式,需要统一说明。 然后,计算方法的不同。引用[2]指出,求深度适合前序遍历(自上而下),而求高度适合后序遍历(自下而上)。例如,计算深度可以在递归时传递当前深度,而计算高度需要先递归到叶子节点再返回高度加一。 可能需要举例说明,比如一个简单的二叉树结构,计算某个节点的深度高度,以及整个树的深度高度是否相等。 还要注意用户提供的引用中的内容是否有冲突,比如引用[4]提到树的深度高度相同,但具体节点不同。需要确保回答中明确这一点。 总结结构应该是:定义对比、计算方法对比、示例、常见问题(如根节点的情况),最后生成相关问题。</think>### 二叉树深度高度的概念区别 #### 一、定义对比 1. **深度(Depth)** - **节点视角**:从根节点到该节点的**最长简单路径边的条数**(或节点数量,取决于定义) - **树视角**:根节点到最远叶子节点的路径长度,即整棵树的深度等于其高度[^3][^4]。 - **方向性**:**自上而下**计算,如根节点深度为 $0$(边数)或 $1$(节点数)[^4]。 2. **高度(Height)** - **节点视角**:从该节点到最远叶子节点的**最长简单路径边的条数** - **树视角**:树的深度相等,但计算方向相反。 - **方向性**:**自下而上**计算,如叶子节点高度为 $0$(边数)或 $1$(节点数)。 #### 二、计算方法对比 | **属性** | **递归方向** | **适用遍历方式** | **递归终止条件** | |----------|--------------|------------------|------------------| | 深度 | 前序遍历 | 自上而下传递参数 | 节点为空时返回当前累计值 | | 高度 | 后序遍历 | 自下而上返回值 | 节点为空时返回 $0$ 或 $-1$ | ##### 示例代码(C语言) ```c // 计算二叉树深度(前序遍历方式) int max_depth = 0; void calc_depth(TreeNode* node, int current_depth) { if (!node) return; max_depth = fmax(max_depth, current_depth); calc_depth(node->left, current_depth + 1); calc_depth(node->right, current_depth + 1); } // 计算节点高度(后序遍历方式) int calc_height(TreeNode* node) { if (!node) return -1; // 空节点高度为-1(边数) int left_height = calc_height(node->left); int right_height = calc_height(node->right); return 1 + fmax(left_height, right_height); } ``` #### 三、关键区别总结 1. **根节点特性**:根节点深度为 $0$(边数定义),但高度等于整棵树的深度。 2. **叶子节点特性**:叶子节点深度最大,但高度为 $0$(边数定义)[^3]。 3. **树整体特性**:树的深度高度数值相等,但描述方向相反[^3]。 #### 示例分析 对于二叉树: ``` A / \ B C / \ D E ``` - **节点A**:深度 $0$(边数),高度 $2$(到叶子D/E的边数) - **节点C**:深度 $1$,高度 $1$ - **树整体**:深度 $2$,高度 $2$ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值