题目
给定一个二叉树,原地将它展开为一个单链表。
例如,给定二叉树
1
/
2 5
/ \
3 4 6
将其展开为:
1
2
3
4
5
6
思路
- 用个prev记录就行了
代码
class Solution {
public:
void flatten(TreeNode* root) {
if(!root) return;
stack<TreeNode*> s;
s.push(root);
TreeNode *prev = nullptr;
while(!s.empty()){
TreeNode *curr = s.top();
s.pop();
if(curr->right) s.push(curr->right);
if(curr->left) s.push(curr->left);
if(!prev){
prev = curr;
continue;
}
prev->left = nullptr;
prev->right = curr;
prev = curr;
}
}
};