class Solution {
public:
void flatten(TreeNode *root) {
//递归思想,将左子树和右子树都变成flatted,然后将右子树的第一个结点连接到左子树的最后一个结点
if(!root)
return;
flatten(root->left);
flatten(root->right);
if(!root->left)//如果左子树为空,就可以直接返回,没有连接的必要了
return;
else{
TreeNode *p;
p=root->left;
while(p->right)//到达左子树的最后一个结点
p=p->right;
p->right=root->right;//类似于链表的添加操作
root->right=root->left;
root->left=NULL;
}
}
};