题目:
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.
思路:
递归,先flatten左边的,再flatten右边的,然后进行连接
package tree; public class FlattenBinaryTreeToLinkedList { public void flatten(TreeNode root) { if (root == null) return; flatten(root.left); flatten(root.right); if (root.left != null) { TreeNode tmp = root.right; root.right = root.left; root.left = null; TreeNode rightMostNode = root; while (rightMostNode.right != null) { rightMostNode = rightMostNode.right; } rightMostNode.right = tmp; } } }