首页 > 其他 > 详细

LeetCode: Flatten Binary Tree to Linked List

时间:2014-02-10 13:32:51      阅读:376      评论:0      收藏:0      [点我收藏+]

Given a binary tree, flatten it to a linked list in-place

我的想法是,先将左子树flatten,然后右子树flatten,然后将左子树的结果移到root.right,然后将右子树接在左子树后面。但是总是超时。

bubuko.com,布布扣
 1 public static void flatten(TreeNode root) {
 2         if (root == null) return;
 3         TreeNode left = root.left;
 4         TreeNode right = root.right;
 5         flatten(left);
 6         flatten(right);
 7         if (left != null) {
 8             root.right = left;
 9             while(left.right != null) {
10                 left = left.right;
11             }
12             left.right = right;
13         }
14         
15         return;
16     }
bubuko.com,布布扣

 


 

网上看的方法是,先将左子树移到root.right,然后把右子树接在后面,最后在flatten整个右子树。。。

bubuko.com,布布扣
 1 public void flatten(TreeNode root) {
 2         if(root == null){
 3             return;
 4         }
 5         
 6         if(root.left != null){
 7             TreeNode rightNode = root.right;
 8             TreeNode leftNode = root.left;
 9             root.left = null;
10             root.right = leftNode;
11             TreeNode p = leftNode;
12             while(p.right != null){
13                 p = p.right;
14             }
15             p.right = rightNode;
16         }
17         flatten(root.right);
18     }
bubuko.com,布布扣

LeetCode: Flatten Binary Tree to Linked List

原文:http://www.cnblogs.com/longhorn/p/3542228.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!