class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int>v;
if(root==nullptr)
return v;
stack<TreeNode*>s;
s.push(root);
TreeNode* p;
while(!s.empty())
{
while(p=s.top()) //左节点退出的条件 ,当栈顶为空的时候退出
{
s.push(p->left); //把所有左节点全部入栈。
}
s.pop(); //因为上面最后一次压入了一个空 所以先把那个空出栈
if(!s.empty()) //当栈不为空的时候
{
p=s.top(); //将栈顶元素更新一下
s.pop(); //将栈顶元素去除
v.push_back(p->val); //将栈顶元素放入数组中准备输出
s.push(p->right); //右子数入栈,循环判断右子数的左节点
}
}
return v;
}
};
二叉树的中序遍历非递归
最新推荐文章于 2022-07-29 15:37:10 发布