二叉树的非递归前序遍历(根->左->右)
void preorderTraversal(TreeNode* root) {
if(root==NULL){
return ;
}
TreeNode * p=root;
stack<TreeNode *> stas;
while(!stas.empty() || p){ //栈不为空,或者p节点不为空
while(p){ //首先从跟节点一直遍历到最左边的节点
printf("%d",p->val);
stas.push(p);
p=p->left;
}
if(!stas.empty()){ //当遍历到最左边节点的时候开始遍历右子树
p= stas.top();
stas.pop();
p=p->right;
}
}
return ;
}

本文介绍了一种二叉树的非递归前序遍历算法,通过使用栈来辅助实现从根节点到最左节点的遍历过程,随后转向右子树进行遍历,详细展示了算法的具体实现代码。
2309

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



