我用的方法是非递归的前序遍历二叉树
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;
}
}
};
本文介绍了一种非递归方法实现二叉树的扁平化处理,即将二叉树转换为带有单边链表的形式,以便于进行后续的遍历操作。通过使用栈来辅助实现,确保了树的前序遍历特性。

316

被折叠的 条评论
为什么被折叠?



