题目:
Given a binary tree, flatten it to a linked list in-place.
For example,
Given1 / \ 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; } }}