想象一个完整的二叉树,其中每个深度级别的节点从左到右编号。
- 节点 1 有子节点 2 和 3。
- 节点 2 有孩子 4 和 5。
- 节点 3 有孩子 6 和 7。
等等
在深度 D 将有 2^D 节点,编号为 2^D ... 2^(D+1)-1
任何深度的完整树的深度优先搜索遍历是确定性的。
例如,将始终遍历深度为 4 的树:1,2,4,8,9,5,10,11,3,6,12,13,7,14,15。
我正在寻找一种方法来对数字列表进行排序,根据它们在任何树的 DFS 遍历中的位置。
特别是,我想要一个比较函数,它可以采用两个数字并确定在 DFS 遍历中哪个先出现。
有任何想法吗?
预先计算某个最大树大小的 DFS 遍历是一种方法,但我更喜欢不需要计算和存储该信息的数学解决方案。