【发布时间】:2022-11-18 02:15:38
【问题描述】:
问题:给定一个节点n的完全二叉树。你有三种类型的信息,
- 以node为根的子树的节点数n
- 节点的父节点n
- 节点的直接子节点n
寻找n在完全二叉树中的位置,如果遍历为了.
例子:
0 / \ 1 2 / \ / \ 3 4 5 6对于给定的树,如果考虑基于 1 的索引,节点 2 的位置为 6。 6的位置是7。
是否有可能在低于线性时间复杂度的情况下找到答案?
【问题讨论】:
-
我假设你有这些信息每一个节点,而不仅仅是一个给定的节点(这似乎使问题无法解决)。节点在其子树中的位置很简单:它是其左子树的大小加一。然后你需要走到根,更新位置:如果你来自左子树,保持当前位置,否则加上左子树大小加一。运行时间为 O(节点深度),平均为 O(log(树的大小))。
标签: algorithm binary-tree graph-theory