zoukankan      html  css  js  c++  java
  • 二叉搜索树的先序中序后序非递归遍历代码

    #include<iostream>
    #include<stack>
    #include<vector>
    using namespace std;
    struct node
    {
      int val;
      node *left,*right;
      node(int _val):val(_val),left(NULL),right(NULL){
       
      } 
    };
    struct bignode
    {

      bool isfirst;
      node* pnode; 
    };
    void postorder(node* root)
    {
     
     stack<bignode*> sta;
     node *p=root;
     while(p!=NULL||!sta.empty())
     {
      while(p)
      {
       bignode *tmp=new bignode();
       tmp->isfirst=true;
       tmp->pnode=p;
       sta.push(tmp);
       p=p->left;
      }
      if(!sta.empty())
      {
       bignode *tmp=sta.top();
       sta.pop();
       if(tmp->isfirst)
       {
        tmp->isfirst=false;
        sta.push(tmp);
        p=tmp->pnode->right;
       }
       else
       {
        cout<<tmp->pnode->val<<" ";
        p=NULL;
       }
      }
     }
    }
    void preorder(node* root)
    {
        stack<node*> sta;
        node* p=root;
        while(p!=NULL||!sta.empty())
        {
         while(p){
      cout<<p->val<<" ";
          sta.push(p);
          p=p->left;
         }
         if(!sta.empty())
         {
          node * tmp=sta.top();
         
          sta.pop();
          p=tmp->right;
         }
         
        }
    }
    void inorder(node* root)
    {
        stack<node*> sta;
        node* p=root;
        while(p!=NULL||!sta.empty())
        {
         while(p){
     
          sta.push(p);
          p=p->left;
         }
         if(!sta.empty())
         {
          node * tmp=sta.top();
          cout<<tmp->val<<" ";
          sta.pop();
          p=tmp->right;
         }
         
        }
    }
    int main()
    {

       node n1(1),n2(2),n3(3),n4(4),n5(5),n6(6);
       n1.left=&n2;
       n1.right=&n3;
       n2.left=&n4;
       n2.right=&n5;
       n3.left=&n6;
       inorder(&n1);
     return 1;
    }

  • 相关阅读:
    ubuntu
    什么是守护进程?
    Redis 简介
    什么是原子性,什么是原子性操作?
    什么是BSD协议?
    查看内存
    数据库备份与还原
    PostgreSQL 判断字符串包含的几种方法
    SQL 基础
    手风琴-过渡效果,显示隐藏列表案例
  • 原文地址:https://www.cnblogs.com/wuxiangli/p/5630129.html
Copyright © 2011-2022 走看看