这是算法理论中的一个简单问题。 它们之间的区别是,在一种情况下,你计算节点的数量,在另一种情况下,计算根节点和具体节点之间最短路径上的边的数量。 哪个是哪个?
当前回答
深度:
树中节点的深度是从根节点到该节点的路径长度。树的深度是树中所有节点的最大深度。
高度:
节点的高度是从该节点到树中最深节点的路径长度。树的高度是树中从根节点到最深节点的路径长度。(例如:上面例子中的树的高度是4(计算边,而不是节点))。 只有一个节点的树高度为零。
要了解更多关于树的基础知识,请访问:树的介绍和属性
其他回答
Daniel A.A. pelsmaker的回答和Yesh的类比非常棒。我想从hackerrank教程中添加更多。希望这也能有所帮助。
节点的深度(或层次)是它的距离(即。从树的根节点开始。 高度是根节点和最远叶之间的边数。 height(node) = 1 + max(height(node. leftsubtree),height(node. rightsubtree)))。 在阅读下面的示例之前,请记住以下几点。 任何节点的高度都是1。 空子树的高度是-1。 单元素树或叶节点的高度为0。
树的高度和深度是相等的……
但是节点的高度和深度是不相等的,因为…
高度是通过从给定节点遍历到可能最深的叶来计算的。
深度是从根到给定节点.....的遍历计算的
深度:节点上面有多少条边,这就是节点的深度 高度:节点下面有多少条边,即节点的高度
Node1 // depth = 0 and height = 2 => root node
|
/ \
Node2 Node3 //depth = 1 and height = 1
| |
Node4 Node5 //depth = 2 and height = 0 => leaf node```
简单的回答是: 深度: 1. 树:从树的根节点到叶节点的边/弧的数量称为树的深度。 2. 节点:从根节点到该节点的边数/弧数称为该节点的深度。
我知道这很奇怪,但是Leetcode也根据路径上的节点数量来定义深度。因此,在这种情况下,深度应该从1开始(总是计算根),而不是0。以防有人和我一样有同样的困惑。