题目:
给定一个二叉树,原地将它展开为链表。
例如,给定二叉树
将其展开为:
// 最终转化完,pre节点只有right,没有left
TreeNode pre = null;
public void flatten(TreeNode root) {
if(root ==null)
return;
if(pre!=null){
pre.left = null;
// pre的右节点顺序就是先序遍历的节点顺序
pre.right = root;
}
pre = root;
TreeNode copyRight = root.right;
// 调用flatten(root.left)后 ,root.right会发生改变,
// 因为pre引用指向root,pre.right=新root,right发生改变
flatten(root.left);
flatten(copyRight);
}