2014年软考程序员-常考知识点复习笔记【第二章】

51CTO学院,在软考备考季特别整理了"2014年软考程序员-常考知识点复习笔记【汇总篇】",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧


查看汇总:2014年软考程序员-常考知识点复习笔记【汇总篇】 热点文章


  二叉树三种遍历的非递归算法(背诵版)

  1.先序遍历非递归算法

  #define maxsize 100

  typedef struct

  {

  Bitree Elem[maxsize];

  int top;

  }SqStack;

  void PreOrderUnrec(Bitree t)

  {

  SqStack s;

  StackInit(s);

  p=t;

  while (p!=null || !StackEmpty(s))

  {

  while (p!=null) //遍历左子树

  {

  visite(p->data);

  push(s,p);

  p=p->lchild;

  }//endwhile

  if (!StackEmpty(s)) //通过下一次循环中的内嵌while实现右子树遍历

  {

  p=pop(s);

  p=p->rchild;

  }//endif

  }//endwhile

  }//PreOrderUnrec

  2.中序遍历非递归算法

  #define maxsize 100

  typedef struct

  {

  Bitree Elem[maxsize];

  int top;

  }SqStack;

  void InOrderUnrec(Bitree t)

  {

  SqStack s;

  StackInit(s);

  p=t;

  while (p!=null || !StackEmpty(s))

  {

  while (p!=null) //遍历左子树

  {

  push(s,p);

  p=p->lchild;

  }//endwhile

  if (!StackEmpty(s))

  {

  p=pop(s);

  visite(p->data); //访问根结点

  p=p->rchild; //通过下一次循环实现右子树遍历

  }//endif

  }//endwhile

  }//InOrderUnrec

  3.后序遍历非递归算法

  #define maxsize 100

  typedef enum{L,R} tagtype;

  typedef struct

  {

  Bitree ptr;

  tagtype tag;

  }stacknode;

  typedef struct

  {

  stacknode Elem[maxsize];

  int top;

  }SqStack;

  //后序遍历

  void PostOrderUnrec(Bitree t)

  {

  SqStack s;

  stacknode x;

  StackInit(s);

  p=t;

  do

  {

  while (p!=null) //遍历左子树

  {

  x.ptr = p;

  x.tag = L; //标记为左子树

  push(s,x);

  p=p->lchild;

  }

  while (!StackEmpty(s) &&s.Elem[s.top].tag==R)

  {

  x = pop(s);

  p = x.ptr;

  visite(p->data); //tag为R,表示右子树访问完毕,故访问根结点

  }

  if (!StackEmpty(s))

  {

  s.Elem[s.top].tag =R; //遍历右子树

  p=s.Elem[s.top].ptr->rchild;

  }

  }while (!StackEmpty(s));

  }//PostOrderUnrec

  4.层次遍历算法

  // 二叉树的数据结构

  structBinaryTree

  {

  int value; // 不写模板了,暂时用整形代替节点的数据类型

  BinaryTree *left;

  BinaryTree *right;

  };

  BinaryTree*root; // 已知二叉树的根节点

  //层次遍历

  voidLevel( const BinaryTree *root )

  {

  Queue *buf = new Queue(); // 定义一个空队列,假设此队列的节点数据类型也是整形的

  BinaryTree t; // 一个临时变量

  buf.push_back(root); //令根节点入队

  while( buf.empty == false ) // 当队列不为空

  {

  p = buf.front(); // 取出队列的第一个元素

  cout




精品文章推荐:

备战2014软考!精品视频教程推荐(综合复习+经验分享+考前冲刺)

2014年计算机软考《网络管理》知识点【汇总篇】

2014年软考网络管理员考试练习题及答案【汇总篇】

2014年软考程序员-笔试-考前练习试题【汇总篇】


软考类在线视频教程,请点击:

http://edu.51cto.com/course/courseList/id-44.html 



wKioL1PE_n3z629yAACXIHScsJM092.jpg


你可能感兴趣的:(计算机,在线视频,练习题,网络管理员)