1
3
既然你提到是向左走还是向右走,我就假设你说的是一棵二叉树。那样的话,我想你是对的,有办法。如果节点从左到右、从上到下编号,从1开始,则可以通过获取节点编号的log2来查找排名(在树中的深度)。要从根中再次找到该节点,可以使用数字的二进制表示,其中0=左,1=右。 例如:
如果要查找下一个有序叶,请获取当前叶的编号并添加一个,然后使用此方法从根遍历。 我相信这只适用于平衡二叉树。 |
2
2
好的,这个提议需要的字符比我在评论框中所能容纳的要多。Steven不相信知道节点在树中的深度是有用的。我想是的。我过去是错的,将来肯定是错的,所以我会努力解释这个想法是怎么起作用的,以期在现在不会错。如果我是,我会提前道歉。我几乎可以肯定,我是从我的算法和数据结构课程,使用CLR的书中得到的。请原谅在符号或术语上的任何错误,我已经有一段时间没有研究过这些东西了。 引用 wikipedia " 我们正在考虑一个具有任意分支度的完全树(其中二叉树的分支度为2)。此外,我们认为我们的节点有一个“位置值”,它是节点的位置值(从上到下,从左到右)的顺序。 现在,如果给我们一个位置值,我们可以按以下方式找到节点。取我们要查找的元素的位置值的log\u base\n(在这一层,我们需要一个整数)。从根部向下移动很多次,减去一。现在,开始查看此级别节点的所有子节点。您正在搜索的节点将在此集中。 本文试图解释维基百科定义的附加部分:
这就是为什么我认为了解我们正在搜索的节点的深度是有帮助的。 这有点奇怪,因为我们通常不关心树中的“位置值”。我可以理解为什么Steve会从数组的角度来考虑这个问题,因为位置值是数组固有的。
|
3
1
至少与你的描述相似的是 Binary Heap |
4
1
我想我已经找到了答案,或者至少是一个传真。
因此,例如,如果节点11是您所寻找的,那么您首先计算3.459的日志。然后。。。
在适当的适应条件下,同样的技术似乎适用于任何平衡的n元树。例如,给定一个平衡的三元树,左、中、右边缘的选择同样基于对数的分数部分,如下所示:
在这一点上,我想知道是否有更简洁的方式来表达整个“基于日志的自上而下的节点选择”。。。 |
5
0
案例1:节点 有 指向其父级的指针
从
没有 指向父级的指针
从
在这两种情况下,我们从根节点向上或向下遍历其中一个节点。这种遍历的最大值是按树的深度排序的,因此如果树是平衡的,则节点的大小是对数的。 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |
Wadu Hek · 查找列表中唯一的重复项 2 年前 |
Crawford Patten · 如何获得整数列表的四分位数 2 年前 |
MoonGoose · 如何在python中围绕特殊字符创建空间? 2 年前 |
taha khamis · 在一个数字中组合元素的省道 2 年前 |
Soup · 比O(n)更快地找到阶乘n模m 2 年前 |
BigO · 单词积分游戏不断增加数字[关闭] 2 年前 |