NEE*_*HAR 6 binary-tree python-3.x
给定一棵二叉树: 高度为 3 的二叉树
我想找到同一级别的两个节点之间的水平距离,同时计算中间不存在的节点,而不计算节点本身,例如
f
/ \
g h
/ \ / \
a d
Run Code Online (Sandbox Code Playgroud)
节点a和d之间的水平距离为 2。
编辑:
请参阅 a 到 d 之间的距离是在同一级别计算的,不包括 a 或 d 的父节点或子节点,而仅包括同一级别的缺失节点。所以 a 到 d 之间的距离将是 a>(x>y)>d 其中 x 和 y 分别是节点 g 和 h 的缺失子节点。因此,不计算目标节点 a 和 d 的水平距离为 2
可以这样想:
a
/ \
b c
/ \ / \
e f g h
Run Code Online (Sandbox Code Playgroud)
现在,您想要确定同一级别的节点之间的水平距离。例如:f 和 g。这是一个逐步的方法:
f
(起始节点)时,将计数器设置为0。g
遇到(结束节点),则停止遍历。更新:正如 anand_v.singh 所指出的,如果树可能没有在所有级别上完全填充,那么它可能会产生错误的结果。
为了克服这个问题,tree_height
将确定一个称为的附加参数。假设树的高度为3,则数组最多包含2个tree_height -1元素,所有元素都初始化为不等于任何树节点的值。现在,您可以使用类似于二进制堆的数组表示形式的东西,将节点值放入数组中各自的索引处。然后按照上述步骤即可得到结果。
归档时间: |
|
查看次数: |
2901 次 |
最近记录: |