数据结构(一)树

摘要:
树是由n≥0个节点的有限集合和节点之间的一组关系组成的结构。它是一对多数据结构。示例:给定一组元素,按照元素的顺序绘制由输入生成的二进制搜索树。霍夫曼树1。定义:霍夫曼树,也称为最优树,是一种具有最小加权路径长度WPL的二叉树。示例2:假设给定的权重集w={2,3,4,7,8,9},尝试构建一个关于w的霍夫曼树,并计算其加权路径长度WPL。WPL=叶节点之和*从0开始的层数

是由n≥0 个结点组成的有穷集合以及结点之间关系组成的集合构成的结构,是一种一对多的数据结构。

数据结构(一)树第1张

  特点:

1. 有且仅有一个结点没有前驱结点,该结点为树的根结点。

2. 除了根结点外,每个结点有且仅有一个直接前驱结点。

3. 包括根结点在内,每个结点可以有多个后继结点。

树的术语:

1. 结点的度:该结点拥有的子树的数目。

2. 树的度:树中结点度的最大值。

3. 叶结点:度为0 的结点。

4. 分支结点:度非0 的结点。

5. 层次的定义:根结点为第一层,若某结点在第i 层, 则其孩子结点(若存在)为第i+1层。

6.树的深度: 树中结点所处的最大层次数。如下为h=3

7.树的有序性: 若树中结点的子树的相对位置不能 随意改变, 则称该树为有序树,否 则称该树为无序树。

数据结构(一)树第2张

  

树的性质

性质1: 树中结点个数等于所有结点的度数加1。  

      A的结点=3,B结点=3,C结点=1,X结点=2   结点个数=(3+3+1+2)+1=10

性质2:  度为k的树中第i层上至多有k (i -1)次方 个结点(i≥1) 。

  k=3 第3层的结点数=3(3-1)=3的2次方=6 所以树为3第三层有6个结点

性质3 深度为h的k叉树中至多有(k*h-1)/(k-1) 结点。 满k叉树:结点个数等于(kh-1)/(k-1) 的k叉树。 (kh-1)为k的h次方在减1  

性质4 具有n个结点的k叉树的最小深度为logk(n(k-1)+1)

  二叉树:度为2的有序树

数据结构(一)树第3张 

1. 一棵非空二叉树的第i 层最多有2的(i–1)次方个结点(i≥1)。比如第二层有多少个结点 n=2的(2-1)次方=2

2.深度为h的非空二叉树最多有2的h次方-1个结点.

3.若非空二叉树有n0个叶结点,有n2个度为2的结点, 则 n0=n2+1

4.具有n个结点的完全二叉树的深度h=[log2n]+1.

二叉树的遍历:前序遍历(DLR),中序遍历(LDR),后序遍历(LRD),层次遍历 

数据结构(一)树第4张

 数据结构(一)树第5张

   数据结构(一)树第6张

 

如何由遍历次序恢复二叉树? 

已知一棵二叉树的后序遍历次序为DEBGFCA,中序遍历次序为DBEACGF,求该二叉树的前序遍历次序 答案:ABDECFG 

提示:从后序遍历次序中找根结点,再从中序遍历次序中找相应根节结点的左子树和右子树

 

 二叉树的存储:

顺序存储: 15=2的h次方-1=2的4次方-1=15

数据结构(一)树第7张

 链式存储:

数据结构(一)树第8张

 满二叉树

若一棵二叉树中的结点, 或者为叶结点, 或者具有两棵非空子树,并且叶结点都集中在二叉树的最下面一层.这样的二叉树为满二叉树.

数据结构(一)树第9张

 完全二叉树

若一棵二叉树中只有最下面两层的结点的度可以小于2, 并且最下面一层的结点(叶结点)都依次排列在该层从左至右的位置上。这样的二叉树为完全二叉树.

数据结构(一)树第10张

  性质:

1、深度为h的完全二叉树的前h-1层为满二叉树

2、完全二叉树最多只有一个度为1的分支节点

求深度为h的完全二叉树的总结点数的范围。答案:2(h-1)次方, 2(h)-1

二叉排序/搜索树

二叉排序/搜索树的定义 :二叉排序树Binary Sort Tree:或者为一棵空树,或者为具有下列特性的非空树:

1、若其左子树非空,则左子树上的所有结点的关键字值均小于根结点关键字值;

2、若其右子树非空,则右子树上的所有结点的关键字值均大于等于根结点关键字值;

3、其左、右子树分别为二叉排序树。 

例:已知一组元素为(46,25,78,62,12,37,70),画出按元素排列顺序输入生成的一棵二叉搜索树, 

哈夫曼树 

1、定义:哈夫曼树(Huffman)树,又称最优树,是一种带权路径长度WPL(树带权路径长度之和叶子节点相加*层数从0开始)最小的二叉树 

例2:设给定权集w={2,3,4,7,8,9},试构造关于w的一棵哈夫曼树,并求其加权 路径长度WPL. 

数据结构(一)树第11张

  WPL=叶子节点相加*层数从0开始

 

免责声明:文章转载自《数据结构(一)树》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转] Android自动测试之monkeyrunner工具(二)linux下数据推送(同步)方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JanusGraph : 图和图数据库的简介

JanusGraph:图数据库系统简介 图(graph)是《数据结构》课中第一次接触到的一个概念,它是一种用来描述现实世界中个体和个体之间网络关系的数据结构。 为了在计算机中存储图,《数据结构》中初步介绍了图的逻辑结构和存储结构。本文对图的定义、图的作用、图的逻辑结构、图的存储结构进行了回顾,继而引出了图数据库、主流的图数据库产品,最后重点介绍了Janu...

聪明的木匠 (哈夫曼树)

假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为[1]: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和; (3)从森林中删除选取的两棵树,...

数据结构:线性表(顺序表)

1、线性表 (1)定义 具有相同特性的数据元素的一个优先序列 第一个元素是起始结点,最后一个叫做终端结点 a结点的前一个结点叫做直接前驱,后一个结点叫做直接后继 元素可以是简单类型也可以是复杂类型(如:学生)的 2、线性表的顺序存储 (1)概念 把逻辑相邻的数据元素存储在物理上相邻的存储单元中的存储结构 第一个元素的存储位置称作起始地址或基地址 知道某一个...

RedisTemplate访问Redis数据结构(四)——Set

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 SetOperations提供了对无序集合的一系列操作。首先初始化spring工厂获得redisTemplate和opsForSet private RedisTempl...

(考研)(精华)二叉树的知识结构图以及各种特殊的二叉树

关于二叉树有一点需要注意:二叉树并不是树的一种特殊形式。 二叉树又有几种特殊的形式:二叉排序树(二叉查找树)、最优二叉树(哈弗曼树)、二叉堆(大顶堆,小顶堆)等。斜线是数据结构 二叉排序树(二叉查找树)(BST)它或者是一棵空树;或者是具有下列性质的二叉树:(常用二分查找)1,若左子树不空,则左子树上所有结点的值均小于它的根结点的值;2,若右子树不空,则...

数据结构与算法80道

1. 把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。    10  /  6 14  / / 4 8 12 16  转换成双向链表 4=6=8=10=12=14=16。   首先我们定义的二元查找树 节点的数据结构如下:  struct BSTreeN...