zoukankan      html  css  js  c++  java
  • 二叉树的遍历方法

    • 二叉树先序递归遍历
    •  1 int PreOrderTraverse(bitree T)
       2 {
       3     bitree p=T;
       4     if(p)
       5     {
       6         cout<<p->data<<' ';
       7         traverse(p->lchild);
       8         traverse(p->rchild);
       9     }
      10 }
    • 二叉树先序非递归遍历(顺序队列实现)
    • int PreOrderTraverse(bitree T)
      {
          bitree a[100];   
          int rear,front;
          rear=front=0;
          a[++rear]=T;
          while(rear!=front)
          {
              bitree p=a[++front];
              cout<<p->data<<' ';
              if(p->lchild)
                  a[++rear]=p->lchild;
              if(p->rchild)
                  a[++rear]=p->rchild;
          }
      }
    • 二叉树中序非递归遍历(顺序栈实现)
      int Traverse(bitree T)            /*栈实现遍历*/
      {
          bitree stack[1000];
          int top=0;
          bitree p=T;
          while(p!=NULL||top>0)
          {
              while(p!=NULL)
              {
                  stack[top++]=p;        /*先将左子树入栈,然后根据每个左子树访问他们的右子树*/
                  p=p->lchild;
              }
              if(top>0)            /*访问右子树*/
              {
                  p=stack[--top];
                  printf("%2c",p->data);
                  p=p->rchild; 
              }
          }
      }                    
    • 二叉树先序非递归遍历(顺序栈实现)
       1 int Traverse(bitree T)            /*栈实现遍历*/
       2 {
       3     bitree stack[1000];
       4     int top=0;
       5     bitree p=T;
       6     while(p!=NULL||top>0)
       7     {
       8         while(p!=NULL)
       9         {
      10             printf("%2c",p->data);
      11             stack[top++]=p;
      12             p=p->lchild;
      13         }
      14         if(top>0)
      15         {
      16             p=stack[--top];
      17             p=p->rchild; 
      18         }
      19     }
      20 }
    • 二叉树中序遍历
      1 int Traverse(bitree T)    
      2 {
      3     if(T)
      4     {
      5         Traverse(T->lchild);
      6         printf("%2c",T->data);
      7         Traverse(T->rchild);
      8     }
      9 }
    • 二叉树后续遍历
      1 int Traverse(bitree T)            
      2     if(T)
      3     {
      4         Traverse(T->lchild);
      5         Traverse(T->rchild);
      6         printf("%2c",T->data);
      7     }
      8 }
  • 相关阅读:
    P1247 取火柴游戏 (奇异局势)
    1290A
    P1236 算24点
    LCP 4. 覆盖
    leetcode 1066. 校园自行车分配 II
    hdu 2255 奔小康赚大钱
    NC200546 回文串
    上市是什么意思 为什么上市就有钱了
    主板、中小板、创业板、新三板的区别是什么?
    熔断机制
  • 原文地址:https://www.cnblogs.com/a1225234/p/4688744.html
Copyright © 2011-2022 走看看