给定一个二叉树,原地将它展开为链表。
例如,给定二叉树
1
/ \
2 5
/ \ \
3 4 6
将其展开为:
1
\
2
\
3
\
4
\
5
\
6
解题思路:
用递归,把左子树作为右子树,并把 原右子树(temp) 拼接在 现右子树 的最右端
class Solution {
public void flatten(TreeNode root) {
if(root==null)
return;
flatten(root.left);
flatten(root.right);
if(root.left!=null){
TreeNode temp = root.right;
root.right = root.left;
TreeNode r = root.right;
// to the right bottom of root's left sub-tree
while(r.right!=null){
r = r.right;
}
r.right = temp;
root.left = null;
}
}
}