如何解决无需构建红黑树即可获得广度优先级别顺序
我有一个长度为 n
的有序数组,其中包含连续的整数元素 1
到 n
。为这个数组构建红黑树后,我可以使用标准的广度优先搜索方法按级别顺序遍历这棵树。
我的问题是,给定任何n <= 100000000
(对应于从1
到n
的连续整数元素的有序数组),是否可以绕过树的构造而直接返回关卡顺序?
解决方法
如果你不介意额外的空间,你可以这样做。
def level_order(n):
queue = [(1,n)]
i = 0
while i < len(queue):
a,b = queue[i]
i += 1
if a > b:
continue
m = (a + b) // 2
yield m
queue.append((a,m - 1))
queue.append((m + 1,b))
print(list(level_order(13)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。