二叉树(2)

news2024/10/7 10:20:02

二叉树的销毁

分为三个部分的销毁:根节点,左子树和右子树

void TreeDestory(BTNode* root)
{
   if(root==NULL)
     return;
   TreeDestory(root->left);
   TreeDestory(root->right);
   free(root);
   root=NULL;
}

层序遍历(上一层带下一层)

typedef struct BinaryTreeNode* QDtaType;
void TreeLevelOrder(BTNode* root)
{
  Queue q;
  QueueInit(&q);
  if(root)
    QueuePush(&q,root);
  while(!QueuEmpty(&q))
  {
     BTNode* front=QueueFront(&q);
     QueuePop(&q);
     BTNode* front = QueueFront(&q);
     printf("%d ",front->data);
         if(front->left)
            QueuePush(&q,front->left); 
         if(front->right)
            QueuePush(&q,front->right);
    
  }
  QueueDestory(&q);
}

队列里面的指针指向树的节点,把节点释放掉,不会影响到树的节点。

判断二叉树是否为完全二叉树:

1、层序遍历走,空也进队列

2、遇到第一个空节点时,开始判断,后面全空就是完全二叉树,后面有非空就不是完全二叉树。 

bool TreeComplete(BTNode* root)
{
   Queue q;
   InitQueue(&q);
   if(root)
      QueuePush(&q,root);
   while(!QueueEmpty(&q))
   {
      BTNode*front=QueueFront(&q);
      QueuePop(&q);
     //遇到第一个空,就可以开始判断,如果队列中还有非空,就不是完全二叉树
      if(front==NULL)
   {
       break;
   }
   QueuePush(&q,front->left);
   QueuePush(&q,front->right);
  }
  

不可能出现,遇到空时,后面还有非空没进队列。

后面非空,一定是前面非空的孩子。

当层序出到空的时候,前面非空都出完了,那他的孩子一定进队列了。

那么这时候就不需要担心。

二叉树的性质

1.规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2^(i-1)个节点,

2.若规定根节点的层数为1,则深度为h的二叉树的最大结点数是2^h-1,

3.对任何一棵二叉树,如果度为0,其叶子结点的个数为n0,度为2的分支结点个数为n2,则有n0=n2+1,(增加一个度为1,减少一个度为0)

4.若规定根节点的层数为1,具有n个结点的满二叉树的深度,h=log2(n+1)

5.对于具有n个节点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的节点有:

题目:具有2n个节点的完全二叉树中,叶子结点的个数是多少个

n0+n1+n2=2n

n0=n2+1 得 2n0+n1-1=2n,

完全二叉树中n1等于1或0

当n1等于0,左边不可能为偶数;当n1等于1,左边才可能为偶数,所以推导出来n0=n。

一棵完全二叉树的节点数为531,那么这棵树的高度为多少?

由前面我们可以知道,一棵完全二叉树的节点数是2^h-1个节点。那么此时,我们可以看最少有多少个节点,也就是h-1层。也就是2^(h-1)-1。(本题算范围)

还原二叉树

前序确定根,中序分割左右子树。由前序可以知道,1一定是跟,那么就可以分为这两片:

进一步确定

然后又可以确定4为右子树的根:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx如何解决惊群效应

什么是惊群效应 惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线…

web权限到系统权限 内网学习第一天 权限提升 使用手工还是cs???msf可以不??

现在开始学习内网的相关的知识了,我们在拿下web权限过后,我们要看自己拿下的是什么权限,可能是普通的用户权限,这个连添加用户都不可以,这个时候我们就要进行权限提升操作了。 权限提升这点与我们后门进行内网渗透是乘…

用AI,每天创作200+优质内容,2分钟教会你操作!

前段时间发布了这篇“寻找爆款文案及标题的9大渠道,直接搬运都能搞流量!”,里面我讲到如何寻找爆款标题。最近不少朋友问我,如何创作这个标题相关的内容。 多数平台都有风控规则,有些平台内容也会有字数要求。为了让大…

【D3.js in Action 3 精译】1.2.2 可缩放矢量图形(三)

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介 1.1 何为 D3.js?1.2 D3 生态系统——入门须知 1.2.1 HTML 与 DOM1.2.2 SVG - 可缩放矢量图形 ✔️ 第一部分第二部分【第三部分】✔️ 1.2.3 Canvas 与 WebGL(精译中 ⏳)1.2.4 C…

10.8K star!史上最强Web应用防火墙雷池WAF

长亭雷池SafeLine是长亭科技耗时近 10 年倾情打造的WAF(Web Application Firewall), 一款敢打出口号 “不让黑客越雷池一步” 的 WAF,愿称之为史上最强的一款Web应用防火墙,足够简单、足够好用、足够强的免费且开源的 WAF,基于业…

全球首款商用,AI为视频自动配音配乐产品上线

近日,海外推出了一款名为Resona V2A的产品,这是全球首款商用视频转音频 (V2A) 技术产品。这项突破性技术利用AI,仅凭视频数据即可自动生成高质量、与上下文相关的音频,包括声音设计、音效、拟音和环境音,为电影制作人、…

单向链表结构

链表结构简介 链表结构是一种用比较特殊的数据结构类型,它也是线性数据结构中的一种,但是与栈结构等线性数据结构不同,它的内部结构并不是一个简单的存储空间,而是一个带有指向性质的单元。要理解链表结构要弄清楚两个问题&#x…

react_后台管理_项目

目录 1.运行项目 2. 项目结构 ①项目顶部导航栏 ②项目左侧导航栏 ③主页面-路由切换区 本项目使用的是 reacttsscss 技术栈。 1.运行项目 在当前页面顶部下载本项目,解压后使用编辑器打开,然后再终端输入命令: npm i 下载依赖后&am…

使用Python绘制动态螺旋线:旋转动画效果

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame绘制螺旋线函数主循环 完整代码 引言 螺旋线是一个具有美学和数学魅力的图形。通过编程,我们可以轻松创建动态旋转的螺旋线动画。在这篇博客中,我们将使用Python和Pygame库来实现…

【python脚本】批量检测sql延时注入

文章目录 前言批量检测sql延时注入工作原理脚本演示 前言 SQL延时注入是一种在Web应用程序中利用SQL注入漏洞的技术,当传统的基于错误信息或数据回显的注入方法不可行时,例如当Web应用进行了安全配置,不显示任何错误信息或敏感数据时&#x…

解决卡顿发热,超帧技术焕发中重载游戏动力

近几年,中国手游市场规模不断扩大,开发者通过在画面、玩法等方面的持续创新和打磨,推出更加精品化的产品。然而愈发精美的画质和复杂的玩法,也给硬件带来超高的负载,导致玩家在游戏过程中,频繁出现掉帧卡顿…

动态规划算法,完全零基础小白教程!不是计算机的都能学会!万字吐血详解。

目录 一、动态规划算法概念 题一 1、算法解析 1)确定状态: ​2)状态转移方程: ​3)初始化: 4)填表顺序: 5)返回值: 2、代码 题二 1、算法解析 1、确…

你喜欢波段交易吗?

波段交易的核心在于精准捕捉市场中的长期趋势波动,以实现更为稳健的收益。与剥头皮和日内交易不同,波段交易者更倾向于持有交易头寸数日乃至数周,以更宽广的视角把握市场动态。 这种交易方式的优势在于,它降低了对即时市场反应的…

C - Popcorn(abs358)

题意&#xff1a;有n个摊子&#xff0c;m个爆米花&#xff0c;想花费最少去的店铺买到所有的口味的爆米花&#xff0c;找到每一列都为‘o’的最少行数。 分析&#xff1a;用dfs寻找最少路径 #include<bits/stdc.h> using namespace std; typedef long long ll; char x;…

【面试系列】AI研究员高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

内网渗透第四天!!!冲冲冲!!怎么绕过uac以及你会all劫持???不安全的服务路径以及服务权限,你会吗???

在第三天我们简单的说了一下绕过uac&#xff0c;但是我们使用的msf模块ask要对方管理员跟我们一起来进行操作&#xff0c;才可以进行提权的操作&#xff0c;这点就限制住了我们。我们今天来讲一下不用钓鱼的绕过的操作。 绕过uac&#xff1a; 使用uacme项目和msf联动来进行绕过…

和小红书一起参会! 了解大模型与大数据融合的技术趋势

在过去的两年中&#xff0c;“大模型”无疑成为互联网行业的焦点话题&#xff0c;曾经炙手可热的大数据架构似乎淡出公众视野。然而&#xff0c;大数据领域并未停滞不前&#xff0c;反而快速演进&#xff0c;传统依赖众多开源组件的大数据平台正逐步过渡到以融合与简化为核心特…

Xorbits inference操作实战

1.操作环境 序号软件版本备注1Windows1.版本&#xff1a;Windows 10 专业版2.版本号&#xff1a;21H23.操作系统内部版本&#xff1a;19044.18892Docker Desktop4.24.2 (124339)3WSLUbuntu 22.04 LTS4Python3.105CUDA12.16Dify0.6.6 Xorbits inference 是一个强大且通用的分布…

那些好用的 Vue3 的工具搭子!!【送源码】

2020 年 9 月 18 日 Vue3 的正式发布已经过去了大约 3 年 9 个月左右&#xff01;&#xff01;&#xff01; 随着 Vue3 版本的逐渐成熟&#xff0c;我们的前端世界也迎来了一系列令人振奋的更新和工具。Vue 生态圈的持续扩大&#xff0c;无疑为前端开发人员带来了前所未有的便…

C盘清理和管理

本篇是C盘一些常用的管理方法&#xff0c;以及定期清理C盘的方法&#xff0c;大部分情况下都能避免C盘爆红。 C盘清理和管理 C盘存储管理查看存储情况清理存储存储感知清理临时文件清理不需要的 迁移存储 磁盘清理桌面存储管理应用存储管理浏览器微信 工具清理 C盘存储管理 查…