给定一个二叉树,原地将它展开为一个单链表。
例如,给定二叉树
1
/ \
2 5
/ \ \
3 4 6
将其展开为:
1
\
2
\
3
\
4
\
5
\
6
代码
class Solution {
public void flatten(TreeNode root) {
flat(root);
}
public TreeNode flat(TreeNode root) {
if(root==null) return null;
TreeNode left=root.left,right=root.right;//记录下左右子树
root.right=flat(left);将左子树连在右子树上
TreeNode temp=root;
while (temp.right!=null)//遍历当前右子树到末尾
temp=temp.right;
temp.right=flat(right);//再将原来的右子树连接到末尾
root.left=null;
return root;
}
}