你的位置:首页 > Java教程

[Java教程]114. Flatten Binary Tree to Linked List


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 }