第六章 树 二叉树.docVIP

  • 91
  • 0
  • 约1.3万字
  • 约 13页
  • 2017-08-16 发布于河南
  • 举报
第六章 树 二叉树 后序遍历的非递归算法。 在对二叉树进行后序遍历的过程中,当指针p指向某一个结点时,不能马上对它进行 访问,而要先遍历它的左子树,因而要将此结点的地址进栈保存。当其左子树遍历完毕之 后,再次搜索到该结点时(该结点的地址通过退栈得到),还不能对它进行访问,还需要遍 历它的右子树,所以,再一次将此结点的地址进栈保存。为了区别同一结点的两次进栈, 引入一个标志变量nae,有 0 表示该结点暂不访问 1 表示该结点可以访问 标志flag的值随同进栈结点的地址一起进栈和出栈。因此,算法中设置两个空间足够的堆栈,其中,STACKlCM]存放进栈结点的地址,STACK2[M]存放相应的标志n昭的值,两个堆栈使用同一栈顶指针top,top的初值为—1。 具体算法如下: #defineH 100 /●定义二叉树中结点最大数目。/ voidPOSTOiRDER(BTREET) { /*T为二叉树根结点所在链结点的地址。/ BTREESTACKl[H],p=T; intSTACK2[M],flag,top=—1; if(T!=NULL) d0{ while(p!=NULL){ STACK/[++top]=p; /●当前p所指结点的地址

文档评论(0)

1亿VIP精品文档

相关文档