思路:将树的子树插入原有的右子树之前,组合成新的右子树,左子树和右子树依次这样递归求解。
code:
class Solution {
public:
void flatten(TreeNode *root) {
if(root == NULL)return;
flatten(root->left);
if(root->left != NULL){
TreeNode *mostRight = root->left;
while(mostRight->right != NULL)
mostRight = mostRight->right;
mostRight->right = root->right;
root->right = root->left;
root->left = NULL;
}
flatten(root->right);
}
};