zoukankan      html  css  js  c++  java
  • 前序遍历

    知识点总结报告

    知识点:

    前序遍历

    (原理)前序遍历二叉树过程

    (1)访问根结点

    (2)先序遍历左子树

    (3)先序遍历右子树

      中序遍历递归算法

    void PreOrder(BTNode *b)        //先序遍历的递归算法

    {   if (b!=NULL)

       {  printf("%c ",b->data);  //访问根节点

          PreOrder(b->lchild);    //递归访问左子树
          PreOrder(b->rchild);    //递归访问右子树
       }
    }

      前序遍历非递归算法

    采用顺序栈存储结构,类型声明如下

    typedef struct                //存放栈中数据元素

    {  BTNode * data[MaxSize];         //存放栈顶指针

      int top;                  //顺序栈存储类型

    }SqStack;

    非递归算法1

    void PreOrder1(BTNode *b)            //先序非递归遍历算法1

    {  BTNode *p;                 

      SqSack  *st;                //定义栈指针st

      InitStack(st);                //初始化栈st

      if(b!=NULL)

      {  Push(st,b);              //根结点进栈

        while(!=StackEmpty(st))        //栈不为空时循环

        {  Pop(st,p);            //退栈结点p并访问它

          printf("%c",p->data);

          if(p->rchild!=NULL)        //有右孩子时将其进栈

            Push(st,p->rchild);    

          if(p->lchild!=NULL)         //有左孩子时将其进栈

            Push(st,p->lchild);

        }

        printf("\n");

      }

      DestroyStack(st);              //销毁栈

    }

    二叉链表中前序遍历非递归算法

    void PreOrder2(BTNode *b)              //先序遍历非递归算法2

    {  BTNode *p;

      SqStack *st;                   //定义一个顺序栈指针st

      InitStack(st);                   //初始化栈st

      p=b;

      while(!StackEmpty(st)||p!=NULL)

      {  while(p!=NULL)               //访问结点p及其所有左下结点并进栈

         {  printf("%c",p->data);          //访问结点p

           Push(st,p);              //结点p进栈

           p=p->lchild;              //移动到左孩子

         }

         if(!StackEmpty(st))             //若栈不空

         {  Pop(st,p);              //出栈结点p

           p=p->rchild;              //转向处理其右子树

         }

      }

      printf("\n");

      DestroyStack(st);                //销毁栈

    }                       

     

     

  • 相关阅读:
    [JavaScript]使用setTimeout减少多余事件
    Spring.NET教程(二)——环境搭建(基础篇) (转)
    IIS开启GZIP压缩效率对比及部署方法 (转)
    提高表格操作的十五款jQuery插件
    SQLServer和Oracle常用函数对比
    [hystar整理]Entity Framework 教程
    Remoting方法重载遇到的一个问题
    异变: input的背景background
    实时股票数据接口
    发现并解决ASP.NET内存耗尽(OOM),让服务器"永不重启"
  • 原文地址:https://www.cnblogs.com/li1997/p/8365975.html
Copyright © 2011-2022 走看看