算法在二叉树上运行离开?
问题描述:
我没有系统地学习uni中的数据结构和算法课程(只是读了一些书),并想问一下是否有明确的算法来为二叉树做下列工作:算法在二叉树上运行离开?
对于给定的二叉树和一个正整数n
,搜索它的叶子。如果两个相邻叶子的深度之间的差异(想象所有叶子显示为一个数组,因此两个相邻的叶子可能在两个不同的子树中)大于n
。用更低的深度细分叶子。递归地执行此操作直到不需要细分。
现在不需要进一步细分。
答
- 初始化P为空
- DFS树的其余部分,直到你在叶大号;出口如果没有更多的叶
- 比较当前深度d 大号与深度d P先前叶的P;进入[5]如果P是空
- 如果| d 大号 - d P | ≥Ñ,分裂或者大号(当d 大号 < d P)或P(否则)
- 考虑大号新P并转到[2]
重复此,直到树收敛(即直到没有裂痕可以执行)。