扫码加入训练营

牢记核心词

学习得礼盒

计算机考研:数据结构常用算法精析(6)

2013-12-11 14:35:35来源:新东方在线编辑

  算法描述:

  void Layerorder(BTptr T) //对二叉树T按层次遍历//

  {

  BTpfr p; qtype Q;

  if (T)

  {

  Clearqueue (Q); //置队Q空//

  Enqueue (Q,T); //将根指针进队//

  while (!Emptyqueue(Q) )

  {

  p=Dequeue(Q); //出队,队头元素Þp//

  visit (p); //访问p结点//

  if (p->Lchild) Enqneue (Q,p->Lchid); //左子指针进队//

  if (p->Rchild) Enqneue (Q,p->Rchid); //右子指针进队//

  }

  }

  }

  遍历算法的应用

  凡是对二叉树中各结点进行一次处理的问题,都可以用遍历算法来完成。

  1.利用遍历算法对二叉树中各类结点计数

  设二叉树中出度=0、1、2的结点数分别为n0、 n1 和n2 ,初值均为0。

  套用遍历算法(前序、中许、后序均可),扫描到树中某p结点时,若:

  if ((p->Lchild==NULL)&&(p->Rchild==NULL))

  n0++; //p为叶子//

  else if((p->Lchild)&&(p->Rchild))

  n2++; //p为出度=2的结点//

  else n1++; // p为出度=1的结点//

  如:只要把遍历算法在遍历时稍微改变一下。

  n0=n1=n2=0;

  void preorder( BTptr T) //对当前根结点指针为T的二叉树按前序遍历//

  {

  if (T) { // visit(T); 访问T所指结点 //

  if ((T->Lchild==NULL)&&(T->Rchild==NULL))

  n0++; //p为叶子//

  else if((T->Lchild)&&(T->Rchild))

  n2++; //p为出度=2的结点//

  else

  n1++; // p为出度=1的结点//

  preorder(T–>Lchild); //前序遍历T之左子树//

  preorder(T–>Rchild); //前序遍历T之右子树//

  }

  }

考研公开课小程序

本文关键字: 计算机 考研 数据结构

考研英语核心词汇营

背词+听课+练习+督学,学习得礼盒

更多资料
更多>>
更多内容

关注新东方在线考研服务号

获得21考研真题及答案解析

1. 打开手机微信【扫一扫】,识别上方二维码;
2.点击【关注公众号】,获取资料大礼包。

近10年考研真题及答案免费下载
更多>>
更多公开课>>
更多>>
更多资料