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
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public void flatten(TreeNode root) { LinkedList<TreeNode> linkedList = new LinkedList<TreeNode>(); TreeNode p = root; while (p != null || !linkedList.isEmpty()) { if (p.right != null) { linkedList.addFirst(p.right); } if (p.left != null) { p.right = p.left; p.left = null; } else if (!linkedList.isEmpty()) { p.right = linkedList.poll(); } p = p.right; } } }
?
Flatten Binary Tree to Linked List
原文:http://hcx2013.iteye.com/blog/2239534