码迷,mamicode.com
首页 > 其他好文 > 详细

Flatten Binary Tree to Linked List

时间:2014-10-17 12:03:13      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   java   for   strong   sp   

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

For example,
Given

         1
        /        2   5
      / \        3   4   6

The flattened tree should look like:
   1
         2
             3
                 4
                     5
                         6
Hints:

If you notice carefully in the flattened tree, each node‘s right child points to the next node of a pre-order traversal.

答案

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public void flatten(TreeNode root) {
        if(root==null||(root.left==null&&root.right==null))
        {
            return;
        }
        TreeNode left=root.left;
        TreeNode right=root.right;
        TreeNode last=root;
        List<TreeNode>list=new LinkedList<TreeNode>();
        if(right!=null)
        {
            list.add(0,right);
        }
        if(left!=null)
        {
            list.add(0,left);
        }
        while(list.size()>0)
        {
            TreeNode p=list.get(0);
            list.remove(0);
            last.left=null;
            last.right=p;
            last=p;
            left=last.left;
            right=last.right;
            if(right!=null)
            {
                list.add(0,right);
            }
            if(left!=null)
            {
                list.add(0,left);
            }
        }
    }
}


Flatten Binary Tree to Linked List

标签:style   blog   color   io   ar   java   for   strong   sp   

原文地址:http://blog.csdn.net/jiewuyou/article/details/40182239

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!