题目
Given a binary tree, flatten it to a linked list in-place.
For example,
Given1 / \ 2 5 / \ \ 3 4 6The flattened tree should look like:
1 \ 2 \ 3 \ 4 \ 5 \ 6
方法
先将根节点的左子树连接到右边,在递归处理子节点。public void flatten(TreeNode root) { if(root == null) return; TreeNode left = root.left; TreeNode right = root.right; if(left != null){ root.right = left; root.left = null; TreeNode rightmost = left; while(rightmost.right != null){ rightmost = rightmost.right; } rightmost.right = right; } flatten(root.right); }