我一直在对二叉树做一些研究,发现每一个其他的来源都对二叉树中节点的深度和高度给出了不同的概念。
高度=从给定节点到叶节点的最大路径长度。
深度=从给定节点到根节点的边数。
/*
* 1 (1) level = 1, height = 3, depth = 0
* / \
* 2 3 (3) level = 2, height = 0, depth = 1
* / \
* 4 5 (5) level = 3, height = 1, depth = 2
* / \
* 6 7 (6, 7) level = 4, height = 0, depth = 3
*/
我从这篇博文中得到了这个概念,但当只有一个节点,即根节点的高度是1
时,我感到困惑。
水平只是一个不直观的词,因为我们在视觉表现中看待像树这样的东西的方式。
根据这篇博文,节点的级别由节点和根节点之间的连接数定义。
在这种情况下,所有这些级别都有意义。7与1之间有3个连接。
然而,你也有一些不正确的高度。请记住,高度是从节点到叶子的最长路径。所以A的高度是到E的路径的边数,而不是到G的边数。它的高度是3。
5
/ \
6 7
在该示例中,5有一行子节点,这些子节点是叶节点,因此其高度为1。但如果将6和7视为单独的树,它们的高度为0,因为它们是叶节点。
从您链接的帖子:
Height of node – The height of a node is the number of edges on the longest downward path between that node and a leaf.
我想它说根的高度是1,参考单根的例子。
在你的例子中,我认为应该是:
/*
* 1 (1) level = 1, height = 3, depth = 0
* / \
* 2 3 (3) level = 2, height = 0, depth = 1
* / \
* 4 5 (5) level = 3, height = 1, depth = 2
* / \
* 6 7 (6, 7) level = 4, height = 0, depth = 3
*/
编辑:好的,你更正了你的帖子,所以我帖子中的相关点是,我认为它说根的高度是1,指的是单根的例子。
简单地说,一个节点的深度就是你从根开始到那个节点所要遍历的边的数量。节点的高度是从该节点开始向下遍历到达最远节点的边的数量。树的高度就是树根的高度。
我坚持使用递归函数来查找二叉树中节点的深度,更具体地说,是在else条件中: 如果树是二叉搜索树,知道左子值总是低于父值,右子值总是高于父值,我可以添加一个If条件,这样如果节点x值低于根,我总是返回根- 当查看函数时,假设节点总是存在的,节点x永远不是根,并且在开始时传递的深度总是0。 如果树是二叉搜索:
参考这个问题的答案 平衡二叉树是: 左子树和右子树的高度最多相差一个,并且 左子树是平衡的,并且 右边的子树是平衡的 现在,用同样的例子 树的根在A. 现在,在查看高度平衡树的定义时,第一点表示: > 左右子树的高度最多相差一个 如果我当前位于节点A,要确定A左子树的高度,如果我计算: 从A(D)或 如果我当前位于节点A,为了确定A的右子树的高度,如果我计算: 从A(F)或 节点C从A(扩展名C)
我试图打印我的二叉搜索树的每个节点的所有值和深度。我很难想出一种递归计算深度的方法。到目前为止,我有一种仅打印树的每个值的方法。我将不胜感激一些指导,因为我觉得我让它变得比应有的更难。
NowCoder 题目描述 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路 // java public int TreeDepth(TreeNode root) { return root == null ? 0 : 1 + Math.max(TreeDepth(root.left), TreeDepth(root.right));
一、题目 输入一棵二叉树的根结点,求该树的深度。从根结点到叶子点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 二、解题思路 如果一棵树只有一个结点,它的深度为1。 如果根结点只有左子树而没有右子树, 那么树的深度应该是其左子树的深度加1,同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1. 如果既有右子树又有左子树, 那该树的深度就是其左、右子
我正在读二叉树。在练习编码问题时,我遇到了一些解决方案,其中要求找到二叉树的最小深度。现在根据我的理解,深度是从根到节点的边数(叶节点的情况下为叶节点/二叉树) 二叉树{1,2}的最小深度是多少 根据我的解决方案,应该是1。