这是算法理论中的一个简单问题。 它们之间的区别是,在一种情况下,你计算节点的数量,在另一种情况下,计算根节点和具体节点之间最短路径上的边的数量。 哪个是哪个?


当前回答

深度:节点上面有多少条边,这就是节点的深度 高度:节点下面有多少条边,即节点的高度

 Node1 // depth = 0 and height = 2 => root node
  |
 / \
Node2 Node3 //depth = 1 and height = 1
|     |
Node4 Node5  //depth = 2 and height = 0  => leaf node```

其他回答

深度:节点上面有多少条边,这就是节点的深度 高度:节点下面有多少条边,即节点的高度

 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. 节点:从根节点到该节点的边数/弧数称为该节点的深度。

树的高度和深度是相等的……

但是节点的高度和深度是不相等的,因为…

高度是通过从给定节点遍历到可能最深的叶来计算的。

深度是从根到给定节点.....的遍历计算的

Daniel A.A. pelsmaker的回答和Yesh的类比非常棒。我想从hackerrank教程中添加更多。希望这也能有所帮助。

节点的深度(或层次)是它的距离(即。从树的根节点开始。 高度是根节点和最远叶之间的边数。 height(node) = 1 + max(height(node. leftsubtree),height(node. rightsubtree)))。 在阅读下面的示例之前,请记住以下几点。 任何节点的高度都是1。 空子树的高度是-1。 单元素树或叶节点的高度为0。

另一种理解这些概念的方式如下: 深度:在根位置画一条水平线,并将这条线作为地面。所以根结点的深度是0,它所有的子结点都向下增长所以每一层结点的深度都是+ 1。

高度:同样的水平线,但这次地面位置是外部节点,这是树的叶子,向上计数。