114. Flatten Binary Tree to Linked List
来源:互联网 发布:linux 刻录文件 编辑:程序博客网 时间:2024/06/06 04:45
解法一:递归解法,非in place
public class Solution { //return the head and tail of flatten tree public TreeNode flattenTree(TreeNode root){ TreeNode left = null, right = null; TreeNode tail = root; if (root.left != null){ left = flattenTree(root.left); } root.left = null; if (root.right != null){ right = flattenTree(root.right); } if (left != null){ tail.right = left; while(tail.right != null) tail = tail.right; } if (right != null){ tail.right = right; while(tail.right != null) tail = tail.right; } return root; } public void flatten(TreeNode root) { if (root != null) flattenTree(root); }}
更优的解法:基于Morris Traversal(http://www.cnblogs.com/AnnieKim/archive/2013/06/15/MorrisTraversal.html)
public class Solution { public void flatten(TreeNode root) { //Morris Traversal TreeNode cur = root; TreeNode former = null; while(cur != null){ if (cur.left != null){ former = cur.left; while(former.right != null && former.right != cur) former = former.right; //first cur, then whole (cur.left), last whole(cur.right), now former is the last of whole(cur.left) //therefore, whole(cur.right) would be placed after former. And let cur.left be cur.right former.right = cur.right; cur.right = cur.left; cur.left = null; } cur = cur.right; } }}
0 0
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 在tableView中,使用xib自定义view设置tableHeaderView时注意事项
- Python:map,filter和zip
- 微信小程序之组件学习2
- Android版本更新
- 抽象类与接口
- 114. Flatten Binary Tree to Linked List
- eclipse没有红色标志但还是提醒有错误
- VC与web交互
- Linux入门:常用命令:网络
- bindService 和startService 终止方法
- php 数组,常用函数
- MySQL安装设置
- ubuntu 升级失败后的起死回升
- Centos 7 修改sshd端口