前言
- 二叉树的前序、中序、后序遍历的非递归实现均采用栈作为中间存储
前序遍历
- 思路:现将根节点存储到栈中,然后开始循环:从栈中拿出一个节点,相应的就要将这个节点的非空右子女和非空左子女依次放入栈中。直至栈为空。
- 代码:
//非递归前序遍历
void PreOrder(BTNode *root,int n){
BTNode **S;//存储栈
int top;//栈顶指针
top = -1;
BTNode *p;
//申明栈空间,并将根节点压入栈中
S = (BTNode **)malloc((n+1)* sizeof(BTNode *));
S[++top] = root;
while (top != -1