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
代码如下:
 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 public class Solution {
11     public void flatten(TreeNode root) {
12         TreeNode p=root;
13         List<TreeNode> list=PreOrder(root);
14  
15        for(int i=1;i<list.size();i++)
16        {
17            p.right=list.get(i);
18            p.left=null;
19            p=p.right;
20        }
21         
22     }
23     public List<TreeNode> PreOrder(TreeNode root){//树的前序遍历
24          List<TreeNode> list=new ArrayList<>();
25          try{
26          list.add(root);
27          
28          if(root.left!=null)
29          list.addAll(PreOrder(root.left));
30          if(root.right!=null)
31          list.addAll(PreOrder(root.right));
32          }catch(NullPointerException e){}
33          return list;
34     }
35 }