lintcode:二叉树的中序遍历 递归,迭代,Morris
来源:互联网 发布:淘宝卖家如何分销 编辑:程序博客网 时间:2024/05/21 09:45
1.递归:
def inorderTraversal(self, root): # 递归 ret = [] if not root: return ret self.inorderHelper(ret, root) return ret def inorderHelper(self, ret, root): if not root: return self.inorderHelper(ret, root.left) ret.append(root.val) self.inorderHelper(ret, root.right)
2 .迭代
def inorderTraversal(self, root): #迭代 res = [0] p = [root] while root or len(p) != 1: while root: p.append(root) root = root.left root = p[len(p) - 1] del p[len(p) - 1] res.append(root.val) root = root.right n = len(res) return res[1 : n]
3 . Moriis
这种方法不使用递归,不使用栈,O(1)的空间复杂度完成二叉树的遍历。这种方法的基本思路就是将所有右儿子为NULL的节点的右儿子指向后继节点(对于右儿子不为空的节点,右儿子就是接下来要访问的节点)。这样,对于任意一个节点,当访问完它后,它的右儿子已经指向了下一个该访问的节点。对于最右节点,不需要进行这样的操作。注意,这样的操作是在遍历的时候完成的,完成访问节点后会把树还原。整个循环的判断条件为当前节点是否为空。
详细参考资料:http://blog.csdn.net/u012877472/article/details/49401751
def inorderTraversal(self, root): # Moriis 方法 ret = [] if not root: return ret curr = root while curr: if not curr.left: ret.append(curr.val) curr = curr.right else: pre = curr.left while pre.right and pre.right != curr: pre = pre.right if not pre.right: pre.right = curr curr = curr.left else: ret.append(curr.val) pre.right = None curr = curr.right return ret
阅读全文
0 0
- lintcode:二叉树的中序遍历 递归,迭代,Morris
- lintcode-二叉树的中序遍历(非递归)-67
- 二叉树的三种非递归遍历和morris遍历
- 【树】二叉树的非递归遍历(栈&Morris)
- 二叉树的非递归遍历(Morris Traversal)
- 二叉树的inorder实现:递归、栈、Morris遍历
- 二叉树的遍历(先序/中序/后序,递归/迭代)与搜索
- 二叉树的几种遍历方式浅析:递归遍历/堆栈遍历/层序遍历/Morris遍历
- 二叉树的几种遍历方式浅析:递归遍历/堆栈遍历/层序遍历/Morris遍历
- Java 二叉树的前序、中序、后续遍历 递归和迭代实现
- 二叉树的中序遍历(lintcode)(递归和非递归)
- Lintcode 二叉树的中序遍历(递归+非递归)
- 【LintCode-67】二叉树的中序遍历(Java实现-递归算法/非递归算法)
- 二叉树遍历(递归、非递归、Morris遍历)
- 二叉树遍历(递归、非递归、Morris遍历)
- LintCode -- 二叉树的中序遍历
- lintcode 二叉树的中序遍历
- lintcode:二叉树的中序遍历
- 动态规划之01背包问题
- 怎样在Transformer+文档保护中使用数字签名
- 测试
- Oracle 数据库的事务隔离级别
- SE
- lintcode:二叉树的中序遍历 递归,迭代,Morris
- spring简介
- Angular2 模版表单
- 使用memory_profiler 与 cProfile ,line_profiler 优化Python程序运行时间和内存消耗实例
- Tomcat下log4j设置文件路径和temp目录
- JAVA表达式的转型规则
- 对《关于下载频道的一系列迷雾》的质疑
- OkHttp + Retrofit 拦截器 拼装参数拦截器 日志输出拦截器
- iOS 贪吃蛇单机版的实现