中序遍历非递归算法演示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A B C E G D F C ^ B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F C B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D A F
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F C B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F C ^ B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F ^ C B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F C B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D A F
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法ຫໍສະໝຸດ Baidu的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
A B C E G D F C B A
S
Push(S,p->rchild); //右子树入栈 右子树入栈 } } return OK; } //NInOrderTraverse
中序遍历二叉树非递归算法栈的变化
int NInorderTraverse(BiTree &T,int(*visit)(char e)) , { InitStack(S); Push(S,T);//根指针入栈 根指针入栈 while(!StackEmpty(S))//在树不空的情况下 在树不空的情况下 { while(GetTop(S,p)&&p) Push(S,p->lchild);//向左走到头 向左走到头 Pop(S,p);//空指针退栈 空指针退栈 if(!StackEmpty(S)) { Pop(S,p);//元素出栈 元素出栈 if(!visit(p->data)) return ERROR;
相关文档
最新文档