实验 递归算法设计技术
实验目的:
通过本次实验,掌握二叉树递归处理算法,并会分析该算法的时间复杂度。
实验环境:
硬件:PC机
软件:windows操作系统,C语言
实验内容:
删除二叉树的子树:假设二叉树中的结点均不相等,采用二叉链存储,设计递归算法删除根结点值为x的子树。
实验过程:
1.算法设计
二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树都是二叉树。左子树和右子树是有顺序的,二叉树是有序树。
二叉链存储:用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。
如果要删除结点值为x的子树,则首先需要查找到值为x的结点,其左子树上的元素都小于树根,右子树上的元素都大于树根,所有的子树也满足这个性质。
找到x结点之后要分析情况,该结点是叶结点,即两端没有结点,没有子树,左右结点为null。该结点只有一端结点,左结点为空或者右结点为空,这样只需要把左结点或者右结点删除即可。该结点是完整的,左右子树都不为空,即两端结点都有值,就需要把左右子树都删除。
CreateBiTree:创建一棵二叉树
Release&