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 }
原标题:114. Flatten Binary Tree to Linked List
关键词: