数据结构笔记 第五章

一.树的逻辑结构
树是一个有限的集合,集合中的元素称为结点。
1、结点的个数为0:称为空树。
2、结点的个数为1:此节点称为根节点。
3、节点的个数大于1:则除了根结点以外的结点又可分为多个集合,每一个集合本身其实质上也是一棵树,并且是根节点的子树。

二.二叉树的逻辑结构
1、二叉树的定义
二叉树首先必须是一棵树,树的每个节点的度数不大于2,并且二叉树是有序的,分左子树和右子树。

2、二叉树的五种基本形态
1)、空二叉树(没有一个结点);
2)、只有一个根节点;
3)、只有左子树;
4)、只有右子树;
5)、既有左子树又有右子树;

3、斜树
斜树首先是一棵二叉y树,二叉树的每个节点都只有左子树称为左斜树,都只有右节点称为右斜树。斜树的每一层都只有一个节点,因此,结点的个数就是斜树的深度。

4、满二叉树
满二叉树的的叶子节点都在最底层,除了叶子节点外,其余结点都有左子树和右子树。满二叉树只有度为0和2的结点。

5、完全二叉树
一棵二叉树按层序编号,如果是一颗满二叉树,则是一颗完全二叉树;如果某一个结点只有一颗子树,那么该子树必须是左子树,并且该子树的编号是最大的;其余情况不是完全二叉树。

三.二叉树的储存结构及实现
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。
通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址

四.树,森林与二叉树的转换
将一棵二叉树转化成森林,可按如下步骤进行:
1)抹线:将二叉树根结点与其右孩子之间的连线,以及沿着此右孩子的右链连续不继搜索到的右孩子间的连线抹掉。这样就得到了若干棵根结点没有右子树的二叉树。
2)将得到的这些二叉树用前述方法分别转化成一般树。

五.哈夫曼树
哈夫曼树的构造
给定N个权值分别为w1, w2, …, Wn的节点。构造哈夫曼树的算法描述如下:
1)将这N个结点分别作为N棵树仅含一个结点的二叉树,构成森林F.
2)构造一个新节点,并从F中选取两棵根结点权值最小的树作为新节点的左、右子树,且将新节点的权值置为左、右子树上根结点的权值之和。
3从F中删除刚才选出的两棵树,同时将新得到的树加入F中。
4重复步骤2和3,直至F中只剩下一棵树为止。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值