class Solution {
public:
void flatten(TreeNode* root) {
if(!root)
return;
TreeNode* ptr = root;
while(ptr){
if(ptr -> left){ //如果左节点存在
TreeNode* tempLeft = ptr -> left; //获取左节点
while(tempLeft -> right) //找到左节点上的最右节点
tempLeft = tempLeft -> right;
tempLeft -> right = ptr -> right; //把最右节点连到当前节点的右节点
ptr -> right = ptr -> left; //原本的左节点变成当前节点的右节点
ptr -> left = nullptr; //左节点置空
}
ptr = ptr -> right; //找下一个存在左节点的节点
}
}
};
Accepted
225/225 cases passed (8 ms)
Your runtime beats 47.41 % of cpp submissions
Your memory usage beats 72.77 % of cpp submissions (12.3 MB)