二叉树的非递归前序遍历(根->左->右)
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 ;
}