我用的方法是非递归的前序遍历二叉树
class Solution {
public:
void flatten(TreeNode *root) {
if (!root || (!root->left && !root->right))
return;
stack
s;
if (root->right)
s.push(root->right);
if (root->left)
s.push(root->left);
root->left = NULL;
TreeNode *pCurrent = root, *pTemp;
while (!s.empty()){
pTemp = s.top();
s.pop();
if (pTemp->right)
s.push(pTemp->right);
if (pTemp->left)
s.push(pTemp->left);
pTemp->left = NULL;
pCurrent->right = pTemp;
pCurrent = pTemp;
}
}
};