题意
题解
方法一:递归遍历
class Solution {
public:
void flatten(TreeNode* root) {
postOrder(root);
}
TreeNode* postOrder(TreeNode* root) {
if (root == nullptr) return nullptr;
TreeNode* leftTree = postOrder(root->left);
TreeNode* rightTree = postOrder(root->right);
root->left = nullptr;
root->right = leftTree;
TreeNode* node = root;
while (node->right) {
node = node->right;
}
node->right = rightTree;
return root;
}
};
class Solution {
public:
void flatten(TreeNode* root) {
if (root == nullptr) return ;
flatten(root->left);
flatten(root->right);
TreeNode* right = root->right;
root->right = root->left;
root->left = nullptr;
while (root->right) {
root = root->right;
}
root->right = right;
}