題目:node
Given a binary tree, flatten it to a linked list in-place.spa
For example,
Given code
1 / \ 2 5 / \ \ 3 4 6
The flattened tree should look like:blog
1 \ 2 \ 3 \ 4 \ 5 \ 6
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.遞歸
思路:it
遞歸,先flatten左邊的,再flatten右邊的,而後進行鏈接class
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; } } }