树-王道-复试

1.度: 树中孩子节点个数,所有结点的度最大值为 树的度
2.有序树: 逻辑上看,树中结点的各子树从左至右是有次序的,不能互换
**3.**树的根节点没有前驱,其他节点只有一个前驱
**4.**所有节点可有零个或者多个后继

常考性质

1. 节点数 = 总度数(总边数)+1
2.度为 m 的树、m 叉树的区别:
在这里插入图片描述
** 3. 度为m的数第 i 层 至多有m(i-1)个结点,m叉树第i层至多有m(i-1)个节点 **
**4.高度为 h 的 m 叉树至多:**有(m^h-1)/m-1个节点
5.高度为 h 的 m 叉树至少: h个节点
6.高度为 h、度为 m 的树至少: h+m-1个节点
7.最小高度为: logmn
在这里插入图片描述
在这里插入图片描述
最小高度的计算:
在这里插入图片描述

2.完全二叉树

就是右叶子节点为缺,左边都是连起来的
在这里插入图片描述
特点:

1.只有最后两层可能有叶子结点。
2最多只有一个度为 1 的结点。(屁股节点,也就是度为1的节点只有1个)
3若按层序从 1 开始编号,结点 i 的左孩子为 2i,右孩子为 2i+1;结点 i 的父节点为 ⌊ i / 2 ⌋ \lfloor i/2\rfloor⌊i/2⌋。
4 i ≤ ⌊ n / 2 ⌋ 为分支结点,i > ⌊ n / 2 ⌋ 为叶子结点。

3.平衡二叉树与二叉搜索树的区别:

平衡:树上任一结点的左子树和右子树的深度之差不超过 1。
搜索:左小于根,右大于根
https://blog.csdn.net/weixin_57128596/article/details/127216542?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170853038416800185813532%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170853038416800185813532&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-127216542-null-null.nonecase&utm_term=BST&spm=1018.2226.3001.4450

4.度合节点数的区别:

1.节点总数n=n0+n1+n2(度为0的节点数+度为1的节点数+度为2的节点数)
n0=n2+1(度为0的节点数=度为2的节点数+1)
2.二叉树的第i层至多有2的i-1次方个节点
3.高度为h的二叉树至多有2的h次方-1个节点
4.如果完全二叉树有2K个节点(偶数),则n1=1,n0=k,n2=k-1
5.如果完全二叉树有2K-1个节点(奇数),则n1=0,n0=k,n2=k-1

5.二叉树的左右孩子

1:节点i的左孩子为 2i
2:节点i的右孩子为 2i+1
3:节点i的父节点为【i/2】
4:节点i的层次为 【log2(i+1)】

6.前中后序遍历

前序:
根左右
中序:
左根右
后序:
左右根

typedef struct BiNode{
   ElemType data;
   struct BiNode *lchild,*rchild;
}BiNode,*BiTree;

void PreOrder(BiTree T){
  if(T!=NULL){
    visit(T);//访问根节点
    PreOrder(T->lChild);//递归左子树
    PreOrder(T->rChild);//递归右子树
  }
}

void InOrder(BiTree T){
  if(T!=NULL){
    InOrder(T->lchild);//递归左子树
    visit(T);//访问当前节点
    InOrder(T->rchild);//递归右子树
  }
}

void PostOrder(BiTree T){
  if(T!=NULL){
    PostOrder(T->lchild);//递归左子树
    PostOrder(T->lright);//递归右子树
    visit(T);
  }
}
求树的最大深度
int maxDepth(BiTree T){
  if(T==NULL) return 0;
  int lDepth=maxDepth(T->lchild);//当前节点的左子树深度
  int rDepth=maxDepth(T->rchild);//当前节点的右子树深度
  return lDepth>rDepth?lDepth+1:rDepth+1;
}
二叉树的层序遍历
//二叉树节点
typedef struct BiNode{
   ElemeType data;
   struct BiNode* lchild,*rchild;
}BiNode,*BiTree;
//链式队列节点,作层序
typedef struct LinkNode{
  BiNode* data;
  struct LinkNode* next;
}LinkNode;

//层序集合,类似List<List<TreeNode>>
typedef struct{
  LinkNode *front,*rear;
}LinkQueue;

void LevelOrder(BiTree T){
  LinkQueue Q; //类似List<List<TreeNode>>
  InitQueue(Q);
  BiTree p;//二叉树节点
  EnQueue(Q,T);//将T入到我们的队列Q中
  while(!IsEmpth(Q)){
    DeQueue(Q,p);//将队列中的队首元素出队,并将其赋值给 p,这样就可以访问当前节点 p
    visit(p);
    //将节点的子节点入队
    if(p->lchild!=NULL){
      EnQueue(Q,p->lchild);
    }
    if(p->rchild!=NULL){
      EnQueue(Q,p->rchild);
    }
 }
}

7.中序前序后序的节点变换

8.树和森林题目

1.
1.:讨论二叉树高度,必须要说他是完全二叉树,高度为log2(n)+1
2.:树-一般我们阐述的是左孩子右兄弟树,左侧图,叶子节点树为1,对应二叉树-因为右兄弟,所以转为二叉树,有两个叶子节点
在这里插入图片描述

树转二叉树的规则:

左孩子右兄弟,BCD三个节点彼此就是兄弟,B是A的孩子,CD是B的兄弟,
但是有个从左到右的顺序,最左的是长兄,
**画法:**从左开始搜,平层为兄弟节点

在这里插入图片描述
森林应该保持平层;注重左右带来的关系
在这里插入图片描述

树和森林和二叉树的遍历关系:

森林和二叉树是一种遍历关系
在这里插入图片描述

9.题目

1.
在这里插入图片描述
2.
节点数=所有节点度数之和+1;
在这里插入图片描述
3.
最大值是高度
在这里插入图片描述
4.
1.节点数=至多高度+度-1
2. 度为n,第i层至多有n的i-1次方
在这里插入图片描述
5.
在这里插入图片描述
度为4,高度为h,至少节点数=h+4-1
度为4,高度为h,最多节点数:(4^h-1)/(度-1)

6
logm(n(m-1)+1)
在这里插入图片描述
7.

n节点总数=对应度数对应的节点个数+…
n0=n-n1-n2-n3-n4…
n节点总数=叶子节点个数n0+其余度数节点的累加
在这里插入图片描述
8.
1.完全二叉树的高度为:(log2n)+1,n为节点个数**(注意一定要是完全二叉树)**
否则链式情况需要考虑,可能有4个节点高度为4
2.如果一个完全二叉树没有左孩子,那么该节点一定是叶子节点
在这里插入图片描述
9.
需要注意i是否是>0,如果i从0开始,那么第i个节点的左孩子为2
i+1,否则为2i

在这里插入图片描述

10

度为0说明该节点为叶子节点,所以在具象化的时候,我们只需要重点在度为2上,所含节点数至少为:2(h-1)+1*
高度为h,所包含节点数至少为2h-1

在这里插入图片描述
11.
最小高度,马上想到完全二叉树,完全二叉树的高度为:(log2n)+1,2为叉树,n为节点数

在这里插入图片描述

12.
公式一:节点总数2n=n0+n1+n2(各度数节点之和 )
公式二:节点总数2n=非叶子节点n1数量1+n22(度数)+1

在这里插入图片描述
13.
二叉树最大深度,每层节点数最少即可,每层最少为2,所以2*h- 1=节点数n
在这里插入图片描述

14.

完全二叉树,已知高为h,最少节点——>(log2^n)+1=h)
由于高度h满二叉树共有2^h-1个结点
高度为h-1满二叉树有2^(h-1)-1个结点
可得2^(h-1)-1 < n <=2^h-1
不等式同时+1:2h-1 < n+1 <=2h
不等式同时取对数:
h-1 < log2n+1 <= h
在这里插入图片描述
15.
计算满二叉树的节点个数:2^n-1,比如这里的五层,就是2的5次方-1
如果是计算某i层的节点个数:2^(i-1)
在这里插入图片描述

16.
方法一:必然大于n/2,所以D
方法二:1.n0=n2+1 ;2.n=n0个数+n1+n2;3.然后完全二叉树的n1不是0就是1,再往里代入,只有D满足
在这里插入图片描述

17.
完全二叉树前n层至多节点数:2^n-1——>前6层最多有 2 ^6-1
完全二叉树前n层至少节点数:2^(n-1)
满二叉树某层节点数:2^(i-1)
满二叉树所有节点数:2^n-1
在这里插入图片描述
18.
1.124个叶子节点,说明这是n0的数量
2.n0=n2+1;n2=n0-1;
3.n=n0+n1+n2——>n=2n0+n1-1
带入n0=124,n1=0/1求解

在这里插入图片描述
19.
1.空指针数量=n+1
2.结点数=度+1
在这里插入图片描述
20
判断节点所在层数的公式:[log2(n)]+1,向下取整
在这里插入图片描述
21.
m叉树拥有n个节点,最小高度为:[logm(n(m-1))]向上取整

在这里插入图片描述
21.
1.首先计算前5层,节点数为:2^5-1(相当于满二叉树)=31
2.第6层有8个叶子节点,有两种情况:倒数第一层或者倒数第二层,因为考虑最多节点数,所以为倒数第二层
第i层节点数为最大:2^(i-1)=32,所以第6层非叶子节点个数为32-8=24个,所以第7层有48个
3.总数为:31+32+48=111

在这里插入图片描述
22.
1.每个非叶子节点有2个子节点,说明n1=0,所以我们只需要关注n0和n2即可
2.n0=n2+1
3.n=2n0-1;
所以为2K-1

在这里插入图片描述
23.
答案:31,存储单元数量跟树的高度相关,比如高度为5,直接算满二叉树所需空间为:2^5-1=31
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/403316.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

备战蓝桥杯—— 双指针技巧巧答链表4

对于单链表相关的问题&#xff0c;双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决&#x1f680;&#x1f680;&#xff1a; 合并两个有序链表&#xff1a; 使用两个指针分别指向两个链表的头部&#xff0c;逐一比较节点的值&#xff0c;…

CI/CD 之 gitlab-runner 注册执行器与踩坑

前言 上一篇已经讲了 gitlab-runner 的部署方法&#xff0c;这一篇我们来讲一下如何注册 gitlab-runner 执行器并创建作业 一、添加 .gitlab-ci.yml 配置文件 在需要注册 CI/CD 的项目中&#xff0c;增加一个 .gitlab-ci.yml 的配置文件 基本模板配置如下&#xff1a; sta…

【Python笔记-设计模式】桥接模式

一、说明 桥接模式是一种结构型设计模式&#xff0c; 主要用于将抽象部分与它的实现部分分离&#xff0c; 从而能在开发时分别使用&#xff0c;使系统更加灵活&#xff0c;易于扩展。 (一) 解决问题 所有 组合类的数量将以几何级数增长 抽象和实现分离&#xff1a;桥接模式可…

音视频技术-声反馈啸叫的产生与消除

目录 1.均衡调节: 2.移频法: 3.移相法: 4.比较法: 在扩音系统中,产生啸叫危害很大,一方面影响会议、演出等活动的正常进行,另一方面严重的啸叫会导致音响设备的损坏。 “啸叫”是“声反馈”的俗称,形成的机制复杂,消除的手段多样,专业调音师也对

Spring Boot中实现列表数据导出为Excel文件

点击下载《Spring Boot中实现列表数据导出为Excel文件》 1. 前言 本文将详细介绍在Spring Boot框架中如何将列表数据导出为Excel文件。我们将通过Apache POI库来实现这一功能&#xff0c;并解释其背后的原理、提供完整的流程和步骤&#xff0c;以及带有详细注释的代码示例。最…

【笔记】深度学习入门:基于Python的理论与实现(二)

神经网络的学习&#xff08;神经网络的学习阶段&#xff0c;不是我们学习神经网络&#xff09; 从数据中学习 训练数据和测试数据 机器学习中&#xff0c;一般将数据分为训练数据和测试数据两部分来进行学习和 实验等。首先&#xff0c;使用训练数据进行学习&#xff0c;寻找最…

wondows10用Electron打包threejs的项目记录

背景 电脑是用的mac&#xff0c;安装了parallels desktop ,想用electron 想同时打包出 苹果版本和windows版本。因为是在虚拟机里安装&#xff0c;它常被我重装&#xff0c;所以记录一下打包的整个过程。另外就是node生态太活跃&#xff0c;几个依赖没记录具体版本&#xff0…

软考29-上午题-【数据结构】-排序

一、排序的基本概念 1-1、稳定性 稳定性指的是相同的数据所在的位置经过排序后是否发生变化。若是排序后&#xff0c;次序不变&#xff0c;则是稳定的。 1-2、归位 每一趟排序能确定一个元素的最终位置。 1-3、内部排序 排序记录全部存放在内存中进行排序的过程。 1-4、外部…

六.生成makefile文件 并基于makefile文件编译opencv

1.点击【Generate】 生成makefile文件 2.进入目录下编译opencv源码&#xff0c;mingw32-make -j 8 3..编译出现报错 4.取消[WITH_OPENCL_D3D11_NV]选项&#xff0c;再次【configure】【generate】 然后再次编译&#xff1a;mingw32-make -j 8

缓存篇—缓存雪崩

什么是缓存雪崩 通常我们为了保证缓存中的数据与数据库中的数据一致性&#xff0c;会给 Redis 里的数据设置过期时间&#xff0c;当缓存数据过期后&#xff0c;用户访问的数据如果不在缓存里&#xff0c;业务系统需要重新生成缓存&#xff0c;因此就会访问数据库&#xff0c;并…

【结合OpenAI官方文档】解决Chatgpt的API接口请求速率限制

OpenAI API接口请求速率限制 速率限制以五种方式衡量&#xff1a;RPM&#xff08;每分钟请求数&#xff09;、RPD&#xff08;每天请求数&#xff09;、TPM&#xff08;每分钟令牌数&#xff09;、TPD&#xff08;每天令牌数&#xff09;和IPM&#xff08;每分钟图像数&#x…

1.CSS单位总结

CSS 单位总结 经典真题 px 和 em 的区别 CSS 中的哪些单位 首先&#xff0c;在 CSS 中&#xff0c;单位分为两大类&#xff0c;绝对长度单位和相对长度单位。 绝对长度单位 我们先来说这个&#xff0c;绝对长度单位最好理解&#xff0c;和我们现实生活中是一样的。在我们…

基于SSH打通隧道实现异地组网

前言 最近有异地组网的需求&#xff0c;我目前的是用蒲公英X1盒子来进行组网&#xff0c;但是蒲公英X1非会员账号有设备限制3个&#xff08;这个是硬伤&#xff09;&#xff0c;虽然说可以打通P2P但是在复杂的网络环境下概率不是特别高 所以研究下SSH异地组网的方式&#xff…

《图解HTTP》笔记2:http的构成

1&#xff0c;查看浏览器上面一个具体的http请求 浏览器地址栏输入网址&#xff1a;https://news.baidu.com/ 使用浏览器的开发者工具&#xff0c;查看网络中发送和接受的数据。 可以看到输入一个网址&#xff0c;浏览器和服务器进行了很多的交互。&#xff08;绿色部分&#…

Docker容器故障排查与解决方案

Docker是一种相对使用较简单的容器&#xff0c;我们可以通过以下几种方式获取信息&#xff1a; 1、通过docker run执行命令&#xff0c;或许返回信息 2、通过docker logs 去获取日志&#xff0c;做有针对性的筛选 3、通过systemctl status docker查看docker服务状态 4、通过…

详细分析Python中的unittest测试框架

目录 1. 基本知识2. API2.1 断言2.2 setUp() 和 tearDown() 3. Demo 1. 基本知识 unittest 是 Python 标准库中的一个单元测试框架&#xff0c;用于编写和执行测试用例以验证代码的正确性 提供了一种结构化的方法来编写测试&#xff0c;使得测试代码更加模块化和易于维护 以…

【kubernetes】二进制部署k8s集群之cni网络插件flannel和calico工作原理(中)

↑↑↑↑接上一篇继续部署↑↑↑↑ 目录 一、k8s集群的三种接口 二、k8s的三种网络模式 1、pod内容器之间的通信 2、同一个node节点中pod之间通信 3、不同的node节点的pod之间通信 Overlay Network VXLAN 三、flannel网络插件 1、flannel插件模式之UDP模式&#xff0…

在 Windows 上使用 VC++ 编译 OpenSSL 源码的步骤

在 Windows 上使用 VC 编译 OpenSSL 源码的步骤如下&#xff1a; 准备工作 安装 Visual Studio 2017 或更高版本。安装 Perl 脚本解释器。安装 NASM 汇编器。 编译步骤 下载 OpenSSL 源码。解压 OpenSSL 源码。打开命令行工具&#xff0c;并进入 OpenSSL 源码目录。运行以下…

核密度分析

一.算法介绍 核密度估计&#xff08;Kernel Density Estimation&#xff09;是一种用于估计数据分布的非参数统计方法。它可以用于多种目的和应用&#xff0c;包括&#xff1a; 数据可视化&#xff1a;核密度估计可以用来绘制平滑的密度曲线或热力图&#xff0c;从而直观地表…

[HTML]Web前端开发技术27(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;佬佬会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…
最新文章