二叉树的存储结构有数组方式和链表方式。但用数组来存储二叉树有可能会
消耗大量的存储空间,故在此选用链表存储,提高存储空间的利用率。根据二叉
树的定义,二叉树的每一个结点可以有两个分支,分别指向结点的左、右子树。
因此,二叉树的结点至少应包括三个域,分别存放结点的数据,左子女结点指针,
右子女结点指针。这将有利于查找到某个结点的左子女与右子女,但要找到它的
父结点较为困难。该实验采取二叉链表存储二叉树中元素,具体二叉树链表表示
如下图所示。
图 1 二叉树的链表表示
(3)基本操作的设计
二叉树关键主要算法:
利用广义表进行二叉树的建立。该算法首先通过重载输入符号,在重载函数
中调用 CreatBinTree 函数,该函数有两个参数,第一个参数为输入流,用于传递
用户输入的二叉树字符串,第二个参数则是二叉树的根结点 root。再通过栈操作
是实现二叉树。
递归与非递归两种方式实现前序、中序、后序的遍历。递归实现三种遍历的
函数均只有一个参数即二叉树根节点 root,递归结束条件则是结点为空。当结点
不为空时,根据三种遍历的方式不同而代码顺序不同。其中前序遍历访问结点顺
序是:根结点、左子树、右子树;中序遍历访问结点顺序是:左子树、根结点、
右子树;后序遍历访问结点顺序是:左子树、右子树、根结点。具体算法以及流
程图见报告实验分析部分。
涉及二叉树性质的一些计算例如树的高度,结点所处层次,结点的度等。在
进行二叉树相关性质计算函数中参数为二叉树根节点 root,再通过需要计算不同
评论1
最新资源