给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树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;}
}