二叉树的非递归遍历方法(额外空间O(1),自研方法)
《算法导论》基本数据结构的练习题中,有这样一个有趣的问题:
给定一个n结点二叉树,写出一个O(n)时间的非递归过程,将该树每个节点的关键字输出,要求除树本身的空间外只能使用固定量的额外存储空间。过程中不得修改该树的内容。
对于时间复杂度O(n),只要每个点遍历一次,就没有什么问题,但一般的非递归二叉树遍历(深度优先搜索BFS等),都需要额外的O(n)空间作为队列、栈或是已输出元素表。(更夸张的是,我在查找有关资料时,竟然发现一篇文章中断言所有的非递归二叉树遍历方法都需要额外的一维数组,甚至有将.
原创
2021-01-20 18:41:53 ·
3498 阅读 ·
3 评论