数据结构笔记

数据结构笔记

这里是我数据结构的学习笔记



前言

学习中,持续更新中


一、树

1.二叉树

1.完全二叉树

完全二叉树性质:
n表示完全 二叉树的节点数; n 0 n_0 n0 表示叶子结点; n 1 n_1 n1 表示只有1个子节点的节点数; n 2 n_2 n2 表示有2个子节点的节点数。
二叉树的性质 n = n 0 + n 1 + n 2 n=n_0+n_1+n_2 n=n0+n1+n2 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1

堆排序:
判断是否为堆排序(大根堆,就是所有子节点都比父节点大,或小根堆),要根据堆排序的两点性质来判断,分别是:

(1) k i ≤ k 2 i k_i≤k_{2i} kik2i k i ≤ k 2 i + 1 k_i≤k_{2i+1} kik2i+1 或(2) k i ≥ k 2 i k_i≥k_{2i} kik2i k i ≥ k 2 i + 1 ( 1 ≤ i ≤ n ) k i k_i≥k_{2i+1}(1≤i≤ n) ki kik2i+1(1in)ki相当于二叉树的非叶结点, K 2 i K_{2i} K2i则是左孩子, k 2 i + 1 k_{2i+1} k2i+1是右孩子.

哈夫曼树

哈夫曼树中,结点的度可能为0,2。为什么呢?因为他的构造规则:
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
哈夫曼树也可以是多叉的,核心思想就是每次找出最权值最小的k个根节点。

二、

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

总结

这里对文章进行总结:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值