新祥旭考研官网欢迎您!

预约报名

2016考研计算机冲刺考点梳理:遍历非递归算法(3)

【新祥旭考研】 / 2015-12-01

   计算机考研专业课复习科目包括数据结构、操作系统、计算机组成原理、计算机网络四门课程。其中数据结构这一科目兼具理论与实践,要求同学们在复习过程中不仅要对教材的基本概念进行记忆,同时还要结合知识点掌握相应的实际操作知识。为帮助同学们在计算机专业课复习上卓有成效,中公考研将为同学们整理全面的考点梳理,今天为大家带来的是数据结构的相关内容,请同学们适当参考,结合自身实际在全面复习的基础上进行重点理解记忆。

  例题:假设二叉树采用链式存储结构进行存储,root^为根结点,p^为任一给定的结点,

  写出求从根结点到p^之间路径的非递归算法。

  [题目分析]采用后序非递归遍历二叉树,栈中保留从根结点到当前结点的路径上所有结点。

  void PrintPath(BiTree bt,p) //打印从根结点bt到结点p之间路径上的所有结点

  {

  BiTree q=bt,s[]; //s是元素为二叉树结点指针的栈,容量足够大

  int top=0; tag[];//tag数组元素值为0或1,访问左、右子树标志,tag和s同步

  if (q==p)

  { printf(q->data);

  return;

  } //根结点就是所找结点

  while(q!=null || top>0)

  {

  while(q!=null) //左子女入栈,并置标记

  if(q==p) //找到结点p,栈中元素均为结点p 的祖先

  { printf(“从根结点到p结点的路径为\n”);

  for(i=1;i<=top;i++)

  printf(s[i]->data);

  printf(q->data);

  return;

  }

  else

  { s[++top]=q;

  tag[top]=0;

  q=q—>lchild;

  } //沿左分支向下

  while(top>0 && tag[top]==1))

  top--;//本题不要求输出遍历序列,这里只退栈

  if (top>0)

  { q=s[top];

  q=q->rchild;

  tag[top]=1;

  } //沿右分支向下

  }//while(q!=null || top>0)

  }//结束算法PrintPath

  按层次遍历二叉树

全方位权威辅导,考研复试效率高

面授一对一
在线一对一
魔鬼集训营
咨询课程 预约登记

以效果为导向    以录取为目标

填写信息获取考研一对一试听名额
姓名:
电话:
报考学校及专业:
北清考研定制 985考研定制 211考研定制 学硕考研定制 专硕考研定制 北京考研私塾
x