回 帖 发 新 帖 刷新版面

主题:[讨论]二叉排序树算法收集贴

此贴为二叉排序树的算法收集贴,涵盖前序,中序,后序,层次遍历;左右子树交换;排序等算法,希望能够为学习数据结构的粉丝们提供帮助,希望大家踊跃回帖。
===========================================================================
1、
试编写交换以二叉链表作存储结构的二叉树中所有结点的左、右子树的算法。
[基本思想]
设二叉树的根指针为t,且以二叉链表表示,可利用一个类型为seqstack的指针栈来实现,且设栈单元包含两个与,一个data,一个top。整个栈容量为maxsize, 当树非空时,将当前的树根结点入栈,同时将当前栈顶元素出栈当作根节点,然后依据当前的根节点是否具有孩子来判定是否将其左、右指针进行交换;在将交换后的左指针或右指针入栈,这样反复进行,直到栈空为止。
============================================================================
2、
已知以二叉链表作存储结构,试编写按层次顺序遍历二叉树的算法。
[算法思想]
本算法要采用一个队列Q,先将二叉树根节点如队列,然后退队列,输出该节点;若它有左子树,便将左子树根节点入队列,如此直到队列空为止。因为对列的特点是先进先出,从而达到按层次顺序遍历二叉树的目的。
============================================================================
3、
已知二叉排序树以二叉链表作存储结构,使编写按从大到小的顺序输出二叉排序树的各节点的算法。
[算法思想]
可以先建立一颗二叉排序树,以二叉链表表示。由于按中序遍历二叉排序树即按递增次序遍历,所以按按从大到小的顺序输出二叉排序树的各结点的值,可以对二叉排序树从树根结点右子树中最右下的节点开始进行遍历,先遍历右子树,在访问根节点,最后遍历左子树,这样就可以得到一个按从大到小的顺序输出的序列。

回复列表 (共1个回复)

沙发

我不知道咋样计算二叉树的,你们可以给我说说吗/
发在邮箱里边

我来回复

您尚未登录,请登录后再回复。点此登录或注册