class Solution
{
public:
vector<int> v;
stack<TreeNode *> s;
TreeNode *cur ;
void findnext()
{
while (true)
{
while (cur->left != nullptr)
{
cur = cur->left;
s.push(cur);
}
if (cur->right != nullptr)
{
cur = cur->right;
s.push(cur);
}
else return;
}
}
vector<int> postorderTraversal(TreeNode *root)
{
if (root == nullptr)
return v;
s.push(root);
cur=root;
findnext();
v.push_back(cur->val);
s.pop();
while (!s.empty())
{
if (s.top()->left == cur&&s.top()->right!=nullptr)
{
cur=s.top()->right;
s.push(cur);
findnext();
}
else /* if (s.top()->right == cur) *//* 还有可能是自己 */
{
cur = s.top();
v.push_back(cur->val);
s.pop();
}
}
return v;
}
};
二叉树后序遍历
最新推荐文章于 2024-08-10 18:31:58 发布