代码:
class Solution {
public void flatten(TreeNode root) {
TreeNode curr = root;
while (curr != null) {
if (curr.left!=null){
TreeNode left = curr.left;
TreeNode temp = left;
//找到左子树最右边的节点
while(temp.right!=null){
temp = temp.right;
}
//将整个右子树全部拼接到左子树的最右节点
temp.right=curr.right;
//将左子树转变到右子树
curr.left=null;
curr.right=left;
}
curr = curr.right;
}
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}