思路:非递归先序遍历二叉树算法,每次压栈时需要访问当前节点。
code:
class Solution {
public:
vector<int> preorderTraversal(TreeNode *root) {
vector<int> ret;
if(root != NULL){
stack<TreeNode *> s;
TreeNode * p = root;
s.push(p);
ret.push_back(p->val);
while(!s.empty()){
while(p->left != NULL){
p = p->left;
ret.push_back(p->val);
s.push(p);
}
TreeNode * temp = s.top();
s.pop();
if(temp->right != NULL){
p = temp -> right;
ret.push_back(p->val);
s.push(p);
}
}
}
return ret;
}
};
本文详细介绍了非递归先序遍历二叉树的算法实现,通过栈操作实现节点的访问顺序,确保了算法的效率与正确性。
299

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



