迭代,使用前序遍历的思路。代码如下。
class Solution {
public:
void flatten(TreeNode *root) {
if(!root) return;
stack<TreeNode*> s;
s.push(root);
TreeNode *cur, *prev = NULL;
while(!s.empty())
{
cur = s.top();
s.pop();
if(cur->right) s.push(cur->right);
if(cur->left) s.push(cur->left);
cur->left = NULL;
if(!s.empty())
cur->right = s.top();
}
}
};