计算机二叉树应用,计算机软件及应用树和二叉树.pptx

本文介绍了树和二叉树的基本概念,包括它们的定义、存储结构(数组和链表表示法)以及遍历方法。讨论了完全二叉树的性质,如深度和结点数的关系,并探讨了二叉树的先序、中序和后续遍历。内容涵盖了树的术语,如根结点、子树、度、分支结点等,以及在数据结构和算法中的应用。
摘要由CSDN通过智能技术生成

目 录;第7章树和二叉树;;树的定义及相关术语二叉树的定义、存储结构和基本运算实现二叉树遍历二叉树与树和森林的相互转换哈夫曼树及应用;树形结构树的定义树的常用术语和基本概念树的表示方法树的基本运算;树形结构:非线性结构;树是n(n>0)个结点的有限集合T,对于任意一棵非空树,满足:(1)有且仅有一个特定的称为根的结点,根结点无前驱;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,….,Tm,其中每个集合本身又是一棵树,称为根的子树。显然:上述树的定义是一个递归定义。;(1) 树的根结点无前驱结点,除根结点之外的所有结点有且仅有一个前驱结点;(2) 树中所有结点可以有零个或多个后继结点。;;双亲、子女祖先、子孙兄弟、堂兄弟度(结点的度和树的度)分支结点、叶子结点开始结点、内部结点结点的层次、树的深度有序树、无序树森林;练习:写出树的叶子结点、非终端结点、各结点的度和树的深度;A;树的存储结构 —— 数组表示法;分别将每个结点的孩子结点连成一个链表,然后将各表头指针放在一个表中构成一个整体结构。;A;用数组T存放各个结点;每个结点信息包括两部分:结点本身的值data和双亲结点在该表中的位置。;A;A;A;A;;二叉树的定义二叉树的性质二叉树的存储遍历二叉树线索二叉树;定义:是由n(n>=0)个结点的有限集合,它或为空树(n=0),或由一个根结点和至多两棵称为根的左子树和右子树的互不相交的二叉树组成。注:二叉树中不存在度大于2的结点;二叉树的子树有左子树和右子树之分,二叉树是有序树。;;空树只有一个根结点的二叉树只有左子树的二叉树只有右子树的二叉树左右子树非空的二叉树;1;1;1) 除最后一层外,每一层都取最大结点数,最后一层结点都集中在最左边的若干位置。2) 叶子结点只可能在层次最大的两层出现。3) 对任一结点,若其右分支下的子孙的最大层次为k,则其左分支下的子孙的最大层次为k或k+1。;;证明:深度为k的二叉树的最大的结点时为二叉树中每层上的最大结点数之和;由性质1得到第i层上的最大结点数为2i-1 ;20+ 21+ 22+…+ 2k-1 = 2k-1;;;性质四:具有n个结点的完全二叉树的深度为不大于 的最大整数。;;;;因为:n0 = 20 n1 = 10 + 15 = 25 n2 = n0 – 1 = 20 – 1 = 19

所以:n = n0 + n1 + n2 = 20 + 25 + 19 = 64;用一组连续的存储单元存储二叉树的数据元素。存储要求:必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系用编号的方法:从树根起,自上层至下层,每层自左至右的给所有结点编号.;对于完全二叉树;对于一般二叉树;1. 二叉链表:;A;A;Typedef struct node { int data; /*数据域*/ struct node *lchild, *rchild; /*左右孩子域*/ } ;struct node TREENODE;;采用顺序结构适用于完全、满二叉树,但对于一般二叉树则会浪费许多存储空间,并且在树中经常要插入和删除结点时,运算效率较低。用链表表示二叉树也会存在许多空链域(在含有n个结点的二叉链表中,共有2n个链域,实用n-1个链域,还有n+1个空链域),但在树中经常要插入和删除结点时,用链表表示二叉树运算效率较高。; 遍历二叉树---即如何按某条搜索路径巡访树中的每一个结点,使得每一个结点均被访问一次,而且仅被访问一次。遍历操作使非线性结构线性化。;假如以L、D、R分别表示遍历左子树、遍历根结点和遍历右子树,遍历整个二叉树则有六种遍历方案:DLR、LDR、LRD、DRL、RDL、RLD;若二叉树不空,则:(1)访问根结点;(2)先序遍历左子树;(3)先序遍历右子树。;Void preorder(treenode *t){ if(t!=NULL) { printf(“%c”, t–>data); preorder(t–>lchild); preorder(t–>rchild); }};若二叉树不空则:(1)中序遍历左子树;(2)访问根结点;(3)中序遍历右子树。;Void inorder(treenode *t){ if(t!=NULL) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值