第一百一十四题:(自愧不如)网上借鉴
1.边界情况:
根结点为空。
2.思路:
这道题就是把结点的右孩子先保存起来,然后把左孩子结点接到结点的右边,再把原先的右孩子接到新的右孩子的最右边叶子结点的右孩子上,依次类推就可以完成了。
图解如下:
class Solution {
public:
void flatten(TreeNode* root) {
if (root == NULL)
return;
TreeNode *current = root;
while (current != NULL){
TreeNode *node_right = current->right;
TreeNode *left = current->left;
if (left != NULL){
current->right = left;
current->left = NULL;
TreeNode *new_right = current->right;
while (new_right->right != NULL){
new_right = new_right->right;
}
new_right->right = node_right;
}
current = current->right;
}
}
};
static const int _ = []() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}();