Data structures 单节点树的高度
我在谷歌上搜索到,只有一个节点的树高没有正确答案。有时是节点计数,有时是边计数,有时是1,有时是0使用节点计数和使用其他时间边计数的情况是什么?节点的高度是从节点到叶的最长路径上的边数。叶节点的高度为0。树的高度是其根节点的高度。 在您的情况下,树的高度将为0。 有关详细答案,请查看此答案。Data structures 单节点树的高度,data-structures,tree,Data Structures,Tree,我在谷歌上搜索到,只有一个节点的树高没有正确答案。有时是节点计数,有时是边计数,有时是1,有时是0使用节点计数和使用其他时间边计数的情况是什么?节点的高度是从节点到叶的最长路径上的边数。叶节点的高度为0。树的高度是其根节点的高度。 在您的情况下,树的高度将为0。 有关详细答案,请查看此答案。 节点的高度是从节点到叶的最长路径上的边数。叶节点的高度为0。树的高度是其根节点的高度。 在您的情况下,树的高度将为0。 有关详细答案,请查看此答案。 这完全取决于你对(1)树和(2)高度的定义。但我们当然希
节点的高度是从节点到叶的最长路径上的边数。叶节点的高度为0。树的高度是其根节点的高度。 在您的情况下,树的高度将为0。 有关详细答案,请查看此答案。
这完全取决于你对(1)树和(2)高度的定义。但我们当然希望保持这样一个特性,即高度是从树到树的一个整体函数;不应有未定义高度的树 例如,假设我们有一个二叉树的定义: 树被定义为(1)空树,或(2)一对树,称为左子树和右子树
type t = Empty | Node of t * t
现在我们可以定义高度,它应该是一个总函数:一棵空树的高度是零——它还能是什么非空树的高度是子树高度加上1的较大值:
let max x y = if x > y then x else y
let rec height tree = match tree with
| Empty -> 0
| Node (left, right) -> 1 + max (height left) (height right)
现在,请注意让我们来到这里的逻辑链:
- 高度是一个整体函数
- 空是一棵法律树
- 因此,一棵空树必须有一个高度
- 空树的唯一合理高度是零
- 因此,具有单个节点的树的高度必须为1
type t = Node of t list
再一次,我们可以给出高度的定义:具有空列表的节点的高度被定义为零,具有非空子节点的节点的高度是最大的子节点高度加上一
let max x y = if x > y then x else y
let rec height tree = match tree with
| Node [] -> 0
| Node h :: t -> max (1 + height h) (height (Node t))
在这个定义中,只有一个节点的树的高度为零,我们计算边数。再看看我们的推理:
- 高度是一个整体函数
- 一棵空树不是合法的树,但一片叶子是合法的
- 因此,叶子必须有高度
- 叶子的合理高度是零
- 因此,一棵单叶树的高度可能为零
当平衡一棵树时,我们不在乎绝对高度;我们关心两棵树之间的高度差异。在这些算法中,我们是否计算边或节点是无关的。不管怎样,差异都是一样的。很多时候这并不重要,所以选择你更喜欢的。这完全取决于你对(1)树和(2)高度的定义。但我们当然希望保持这样一个特性,即高度是从树到树的一个整体函数;不应有未定义高度的树 例如,假设我们有一个二叉树的定义: 树被定义为(1)空树,或(2)一对树,称为左子树和右子树
type t = Empty | Node of t * t
现在我们可以定义高度,它应该是一个总函数:一棵空树的高度是零——它还能是什么非空树的高度是子树高度加上1的较大值:
let max x y = if x > y then x else y
let rec height tree = match tree with
| Empty -> 0
| Node (left, right) -> 1 + max (height left) (height right)
现在,请注意让我们来到这里的逻辑链:
- 高度是一个整体函数
- 空是一棵法律树
- 因此,一棵空树必须有一个高度
- 空树的唯一合理高度是零
- 因此,具有单个节点的树的高度必须为1
type t = Node of t list
再一次,我们可以给出高度的定义:具有空列表的节点的高度被定义为零,具有非空子节点的节点的高度是最大的子节点高度加上一
let max x y = if x > y then x else y
let rec height tree = match tree with
| Node [] -> 0
| Node h :: t -> max (1 + height h) (height (Node t))
在这个定义中,只有一个节点的树的高度为零,我们计算边数。再看看我们的推理:
- 高度是一个整体函数
- 一棵空树不是合法的树,但一片叶子是合法的
- 因此,叶子必须有高度
- 叶子的合理高度是零
- 因此,一棵单叶树的高度可能为零