这是算法理论中的一个简单问题。 它们之间的区别是,在一种情况下,你计算节点的数量,在另一种情况下,计算根节点和具体节点之间最短路径上的边的数量。 哪个是哪个?
当前回答
节点的“深度”(或等效的“层数”)是根节点“路径”上的边数
节点的“高度”是指从该节点到叶节点的最长路径上的边数。
其他回答
根据Cormen等人。算法简介(附录B.5.3),树T中节点X的深度定义为从T的根节点到X的简单路径的长度(边数),节点Y的高度是从Y到叶子的最长的向下简单路径上的边数。树的高度定义为其根节点的高度。
注意,简单路径是没有重复顶点的路径。
树的高度等于树的最大深度。节点的深度和高度不一定相等。这些概念的说明见Cormen et al.第三版的图B.6。
我有时会遇到要求计算节点(顶点)而不是边的问题,所以如果你不确定是否应该在考试或工作面试中计算节点或边,就要求澄清。
Daniel A.A. pelsmaker的回答和Yesh的类比非常棒。我想从hackerrank教程中添加更多。希望这也能有所帮助。
节点的深度(或层次)是它的距离(即。从树的根节点开始。 高度是根节点和最远叶之间的边数。 height(node) = 1 + max(height(node. leftsubtree),height(node. rightsubtree)))。 在阅读下面的示例之前,请记住以下几点。 任何节点的高度都是1。 空子树的高度是-1。 单元素树或叶节点的高度为0。
深度:
树中节点的深度是从根节点到该节点的路径长度。树的深度是树中所有节点的最大深度。
高度:
节点的高度是从该节点到树中最深节点的路径长度。树的高度是树中从根节点到最深节点的路径长度。(例如:上面例子中的树的高度是4(计算边,而不是节点))。 只有一个节点的树高度为零。
要了解更多关于树的基础知识,请访问:树的介绍和属性
简单的回答是: 深度: 1. 树:从树的根节点到叶节点的边/弧的数量称为树的深度。 2. 节点:从根节点到该节点的边数/弧数称为该节点的深度。
我知道这很奇怪,但是Leetcode也根据路径上的节点数量来定义深度。因此,在这种情况下,深度应该从1开始(总是计算根),而不是0。以防有人和我一样有同样的困惑。
推荐文章
- 有效的方法应用多个过滤器的熊猫数据框架或系列
- 实现嵌套字典的最佳方法是什么?
- BASE术语解释
- 哪些是遗传算法/遗传规划解决方案的好例子?
- JavaBean和POJO之间的区别是什么?
- 如何在O(n)中找到长度为n的无序数组中的第k大元素?
- 一个用于膨胀/收缩(抵消,缓冲)多边形的算法
- 我如何使用Node.js Crypto创建HMAC-SHA1哈希?
- 如何用动态规划确定最长递增子序列?
- 在c++程序中以编程方式检测字节序
- 理解递归
- 段树、区间树、二叉索引树和范围树之间有什么区别?
- 给定一个数字,找出下一个与原始数字具有完全相同的数字集的更高的数字
- HSL到RGB的颜色转换
- 使用Java在原语数组中查找最大/最小值