先序遍历,用一个stack 来存储节点。然后用一个dummyHead 来存储头结点。
class Solution {
public:
void flatten(TreeNode* root) {
if(root == NULL) return;
TreeNode* dummyHead = new TreeNode(0);
auto k = dummyHead;
stack<TreeNode*> s;
s.push(root);
while(!s.empty()){
auto cur = s.top();
s.pop();
if(cur->right != NULL) s.push(cur->right);
if(cur->left != NULL) s.push(cur->left);
k->right = cur;
k = k->right;
k->left = NULL;
}
root = dummyHead->right;
}
};