2016 - 2024

感恩一路有你

后序遍历的非递归算法 编写一个程序,实现二叉树的先序遍历,中序遍历,后序遍历的各种递归和非递归算法,以及层次遍历的算法?

浏览量:2384 时间:2021-03-10 22:06:10 作者:admin

编写一个程序,实现二叉树的先序遍历,中序遍历,后序遍历的各种递归和非递归算法,以及层次遍历的算法?

二叉树可以通过后序和中序遍历进行恢复,以方便其他树的操作。在这里,我们先恢复二叉树,然后进行预序遍历,得到预序遍历的结果。我们同意恢复树的函数称为restoretree()。恢复左右子树时,需要计算它们的位置,即H1、H2和Z1、Z2的值需要重新计算,并在更新后传递给restoretree()函数。以左子树的构造为例,左子树的第一个元素下标为Z1,最后一个元素下标为I-1,H1的对应值为H1,H2的值为H1(I-Z1-1),即H1的当前位置向前移动I-Z1-1长度。R代码实现以实现前面提到的字母序列为例,因为当代码恢复树时,它首先恢复根节点,然后访问树的左、右子树,所以恢复过程也相当于根优先遍历过程。如果只想先遍历找到根,就不能构建树。我们可以删除根优先遍历函数并简化其他一些语句,这两段代码的结果是相同的。以下是示例输入和输出。这里的代码扩展添加了一段代码,它使用前序遍历和中序遍历来恢复二叉树并进行后序遍历。R代码可以像以前一样简化。简化后,无需建树即可遍历。这很正常。有必要多花点时间。首先需要了解堆栈的操作和意义,还需要了解遍历二叉树的思想。有人用节点着色来编写非递归算法,即黑、灰、白三种颜色代表节点的状态,未被访问的节点为白色,未被访问的节点为灰色,被访问的节点为黑色。对于中间顺序遍历,除非访问了左子树,否则需要访问当前节点,所以依次沿左子树搜索,找到叶子后访问,然后退出右堆栈上的元素,并在右子树上执行相应的操作,直到堆栈为空。

后序遍历的非递归算法 中序遍历非递归算法 后序遍历非递归算法讲解

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。