数据结构--树型结构
zisuu
这个作者很懒,什么都没留下…
展开
-
树--哈夫曼编码--最小堆原生版本和STL版本
输入样本:7A 1 B 1 C 1 D 3 E 3 F 6 G 64A 00000B 00001C 0001D 001E 01F 10G 11A 01010B 01011C 0100D 011E 10F 11G 00A 000B 001C 010D 011E 100F 101G 110A 00000B 00001C 0001D 001E...原创 2020-04-15 22:02:22 · 236 阅读 · 0 评论 -
树--利用最小堆建立哈夫曼树
1定义构建1每次把权值最小的两颗二叉树合并,最后即可构建哈夫曼树2可以利用最小堆来实现,只不过现在存放的是根节点,不是普通的int,char类型的数据#include<bits/stdc++.h>using namespace std;struct Haff{ int data; Haff *left; Haff *right;};typedef Haff * ...原创 2020-04-14 19:40:22 · 625 阅读 · 0 评论 -
应用--堆的建立,调整
什么是堆两个特性结构性:用数组表示的完全二叉树有序性:任一结点的关键字是其子树所有结点的最大值(或最小值) “最大堆(MaxHeap)”,也称"大顶堆":最大值最小堆(MinHeap)”,也称"小顶堆":最小值构建最大堆:建立堆的主要函数存储结构体:struct node{ int *data; int size;};1 create() 初...原创 2020-04-13 20:37:27 · 303 阅读 · 0 评论 -
树--平衡二叉树(AVL)
为什么需要AVL树二叉搜索树的搜索效率与其树的深度相关,而二叉搜索树的组成又与其插入序列相关,在极端情况下,二叉搜索树退化为一条单链(比如插入序列是 1 2 3 … n),使得搜索效率大大降低,为了避免这种情况出现,我们采用二叉平衡树对插入结点进行调整,使得树的深度尽可能小定义平衡因子BF(T)=hL-hRhL和hR分别为左子树和右子树的高度平衡二叉树左右子树高度之差不超过1...原创 2020-04-12 20:51:21 · 100 阅读 · 0 评论 -
树--二叉搜索树(bst)
二叉搜索树定义 二叉搜索树(BST)也称二叉排序树或二叉查找树二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根结点的键值非空右子树的所有键值大于其根结点的键值左、右子树都是二叉搜索树特殊函数BinTree Find(ElementType X,BinTree BST):从二叉搜索树 BST 中查找元素 X,返回其所在结点地址Bin...原创 2020-04-12 20:12:47 · 130 阅读 · 0 评论 -
树的表示方法
1双亲表示法:双亲表示法取一块连续的内存空间,在存储每个结点的同时,各自都附加一个记录其父结点位置的变量。在树结构中,除了树根外,每个结点都只有一个父结点(又叫“双亲结点”)struct node{ int e; int parent;};struct tree{ node a[100]; int size;};void init(tree *&root){ ...原创 2020-04-10 21:13:56 · 1787 阅读 · 0 评论 -
树--线索二叉树的建立及其遍历
0线索二叉树的存储结构体:1先序序列化:先序构树思想:对于先序线索二叉树,我想提醒的是:每次只会把当前节点的左子树前驱链上,这一次的 后继 不会在本次链上,当pCur指向下一个节点的时候,才会把上一次的后继链上代码:先序线索化:先序遍历的思想:先往左遍历一遍,到底了之后往后继节点或者右子树找(要先判断是右子树还是线索节点)#include<bits/stdc++.h&...原创 2020-04-08 16:11:42 · 264 阅读 · 0 评论 -
树--二叉树的遍历
1二叉树的递归遍历:给定中序和后序序列,建立先序序列#include<bits/stdc++.h>using namespace std;/*87 8 11 3 5 16 12 188 3 11 7 16 18 12 53*/int lchild[10000]={0};int rchild[10000]={0};int mid[10000]={0};int a...原创 2020-04-07 21:54:46 · 296 阅读 · 0 评论