zoukankan      html  css  js  c++  java
  • 二叉树的3种非递归遍历


    #include <iostream> #include <stack> using namespace std; //二叉链表示法 typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; void preOrder(BiTNode *r)//先序遍历(先遍历根然后遍历左子树最后遍历右子树) { if(r==NULL) { return ; } stack<BiTNode*> s; while(!s.empty()||r!=NULL) { while(r!=NULL) { cout<<r->data<<" ";//访问根节点 s.push(r);//入栈 r=r->lchild; } if(!s.empty()) { r=s.top();//从栈顶拿到元素 s.pop();//弹出栈顶元素 r=r->rchild; } } } void inOrder(BiTNode *r)//中序遍历(先遍历左子树然后遍历根最后遍历右子树) { stack<BiTNode*> s; while(r!=NULL||!s.empty()) { while(r!=NULL)//遍历左子树 { s.push(r); r=r->lchild; }//endwhile if(!s.empty()) { r=s.top(); cout<<r->data<<" "; //访问根结点 s.pop(); r=r->rchild; //通过下一次循环实现右子树遍历 } } } void postOrder(BiTNode *r)//后序遍历(先遍历左子树然后遍历右子树最后遍历根) {//这里以第二种思想遍历 if(r==NULL) { return ; } stack<BiTNode*> s; BiTNode *cur;//当前结点 BiTNode *pre=NULL;//前一次访问的结点 s.push(r); while(!s.empty()) { cur=s.top(); //如果当前结点没有孩子结点或者孩子节点都已被访问过 if((cur->lchild==NULL&&cur->rchild==NULL)||(pre!=NULL&&(pre==cur->lchild||pre==cur->rchild))) { cout<<cur->data<<" "; s.pop(); pre=cur; } else { if(cur->rchild!=NULL) s.push(cur->rchild); if(cur->lchild!=NULL) s.push(cur->lchild); } } } void main() { //创建树的节点 BiTNode a={'A',NULL,NULL}; BiTNode b={'B',NULL,NULL}; BiTNode c={'C',NULL,NULL}; BiTNode d={'D',NULL,NULL}; BiTNode e={'E',NULL,NULL}; BiTNode f={'F',NULL,NULL}; BiTNode g={'G',NULL,NULL}; BiTNode h={'H',NULL,NULL}; BiTNode i={'I',NULL,NULL}; //建立关系 a.lchild=&b; a.rchild=&e; b.rchild=&c; c.lchild=&d; e.rchild=&f; f.lchild=&g; g.lchild=&h; g.rchild=&i; //树的遍历 printf("先序遍历:"); preOrder(&a); printf(" "); printf("中序遍历:"); inOrder(&a); printf(" "); printf("后序遍历:"); postOrder(&a); printf(" "); system("pause"); }

      

  • 相关阅读:
    I/O模型浅析
    (转)Linux中的文件描述符
    深入理解jQuery中的Deferred
    Windows安装docker (带安装包)
    windows 安装docker报错:Error checking TLS connection: ssh command error: command : ip addr show
    什么是负载均衡
    python把列表前几个元素提取到新列表
    Uncaught DOMException: Failed to construct 'WebSocket': The URL
    json中的json.dumps()
    将代码上传版本库gitee
  • 原文地址:https://www.cnblogs.com/jueshi0208/p/5546106.html
Copyright © 2011-2022 走看看