数据结构——二叉树的实现

关于二叉树的实现的随便几点~~~~
(1) 如何基于左子结点/右兄弟结点表示法实现二叉树?
分析及解决:对于基于左子结点/右兄弟结点表示法实现二叉树,可以建立如图所示的关系表,通过数组进行物理实现,基于数组中对应的下标构建关系。
在这里插入图片描述

(2)遍历操作算作基本操作还是应用?
分析及解决:对于遍历操作在二叉树中,即可以属于基本操作,也可以算作应用。但要注意的是:在归为基本操作时,基本操作内不能出现 I/O 流的操作,所以存在较多的限制,当把遍历操作归于应用时,可以直接写在 demo 主程序中,不需要拘于这种限制,实现起来比较简单。

(3)基于左子结点/右兄弟结点表示法实现的二叉树如何遍历?
分析及解决:基于左子结点/右兄弟结点表示法实现二叉树的遍历可以通过递归进行遍历,也可以利用非递归的方法实现。例如在实际的实现过程中,考虑到设计的精简性,基于左子结点/右兄弟结点表示法实现二叉树的前序遍历、中序遍历和后序遍历采用递归实现,具体实现与二叉链表树类似,而层次遍历,在构建二叉树时通过层序遍历顺序输入、数组储存进行,于是层序遍历只需要将数组从头到尾遍历即可,于是采用了非递归的方法。

实验心得
实验设计比较完善,按照实验要求进行了基于左子结点/右兄弟结点表示法和二叉链表 来实现二叉树 ADT 及 demo 程序的设计,完成了实验目的。在刚开始的实验中,我把遍历操 作归于二叉树的基本操作,但在基本操作实现的过程中,直接使用 I/O 流进行了输入和输 出,后来发现这样是不正确的,于是在原来的基础上进行了修改,将遍历操作归于应用操 作,直接在主程序中进行实现,这样就打破了诸多的限制,实现起来也比较简单。完成之 后思考发现,其实将遍历操作归于基本操作,可以使用 visit 函数进行。

具体代码实现:
数据结构——二叉树的实现 (包含二叉链表和左子右兄弟两种实现方法)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章