【数据结构】---二叉树类型部分练习解析让你更深程度了解二叉树

news2024/10/5 16:26:41

文章目录

  • 前言
  • 🌟一、第一种:二叉树性质类型:
    • 🌏1.1 第一题:
      • 💫1.1.1 理论:
      • 💫1.1.2 图解:
      • 💫1.1.3 解析:
    • 🌏1.2 第二题:
      • 💫1.2.1 理论:
      • 💫1.2.2 图解:
    • 🌏1.3 第三题:
      • 💫1.3.1 理论推理:
  • 🌟二、第二种:二叉树遍历+创建类型:
    • 🌏2.1 牛客题目:
      • 💫 题目:KY11 二叉树遍历
    • 🌏2.2 链接:
    • 🌏2.3 代码:
    • 🌏2.4 流程图:
  • 😽总结


前言

👧个人主页:@小沈熬夜秃头中୧⍤⃝❅
😚小编介绍:欢迎来到我的乱七八糟小星球🌝
📋专栏:数据结构
🔑本章内容:二叉树类型部分练习
送给各位💌:月亮本无光 努力久了便会万丈光芒
记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~


提示:以下是本篇文章正文内容,下面案例可供参考

🌟一、第一种:二叉树性质类型:

二叉树性质:

若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2(i-1)个结点.
若规定根节点的层数为1,则深度为h的二叉树的最大结点数是 2h -1.
对任何一棵二叉树, 如果度为0其叶结点个数为 n, 度为2的分支结点个数为m ,则有n =m+1
若规定根节点的层数为1,具有n个结点的满二叉树的深度,h=log2(n+1) . (ps:log2(n+1)是log以2为底,n+1为对数)
对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的结点有:
若i>0,i位置节点的双亲序号:(i-1)/2;i=0,i为根节点编号,无双亲节点
若2i+1<n,左孩子序号:2i+1,2i+1>=n否则无左孩子
若2i+2<n,右孩子序号:2i+2,2i+2>=n否则无右孩子

具体可看:【数据结构】— 博主拍了拍你并向你扔了一“棵”二叉树(概念+结构)

🌏1.1 第一题:

  1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为(B
    A 不存在这样的二叉树
    B 200
    C 198
    D 199

💫1.1.1 理论:

关于二叉树的度具体可看:【数据结构】— 博主拍了拍你并向你扔了一“棵”二叉树(概念+结构)

节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6:B C D E F G

💫1.1.2 图解:

请添加图片描述

💫1.1.3 解析:

某二叉树共有 399 个结点,其中有 199 个度为 2 的结点(n2),则该二叉树中的叶子结点数(n0)为
这就相当于知道了度为2的让你度为1的代入公式:n0=n2+1 <==> n0=199+1<=>20

🌏1.2 第二题:

  1. 在具有 2n 个结点的完全二叉树中,叶子结点个数为(A
    A n
    B n+1
    C n-1
    D n/2

💫1.2.1 理论:

完全二叉树度为1的节点个数最多有一个,最少有0个

💫1.2.2 图解:

请添加图片描述

🌏1.3 第三题:

  1. 一棵完全二叉树的节点数位为531个,那么这棵树的高度为(B
    A 11
    B 10
    C 8
    D 12

💫1.3.1 理论推理:

高度为h的满二叉树的节点数量:2^h-1
具体推论可以看【数据结构】— 博主拍了拍你并向你扔了一“棵”二叉树(概念+结构)
排除法带入可以算出带入10是可以满足的算出大致范围是[512 1023]
512(代表前9层是满的然后第十层有一个所以2^9-1+1 == 512)
1023(代表满二叉树2^10-1=1024)

🌟二、第二种:二叉树遍历+创建类型:

🌏2.1 牛客题目:

💫 题目:KY11 二叉树遍历

描述
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
输入描述
输入包括1行字符串,长度不超过100。
输出描述
可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。 每个输出结果占一行。

请添加图片描述

🌏2.2 链接:

KY11 二叉树遍历

🌏2.3 代码:

对于为什么传i的地址而不是传值可以看力扣—二叉树OJ题(多种题型二叉树)

#include <stdio.h>
#include<stdlib.h>
typedef int BTDataType;
typedef struct BinaryTreeNode
{
	BTDataType data;
	struct BinaryTreeNode* left;
	struct BinaryTreeNode* right;
}BTNode;

BTNode* BuyNode(BTDataType x)
{
	BTNode* node = (BTNode*)malloc(sizeof(BTNode));
	if (node == NULL)
	{
		perror("malloc fail");
		return NULL;
	}
	node->data = x;
	node->left = NULL;
	node->right = NULL;
	return node;
}
BTNode* CreatTree(char* a,int* pi)
{
    if(a[*pi]=='#')
    {
        (*pi)++;
        return NULL;
    }
    BTNode* root=BuyNode(a[*pi]);
    (*pi)++;
    root->left=CreatTree(a,pi);
    root->right=CreatTree(a,pi);
    return root;
}
void InOrder(BTNode* root)
{
    if(root==NULL)
    return;
    InOrder(root->left);
    printf("%c ",root->data);
    InOrder(root->right);
}
int main() 
{
    int i=0;
    char a[100];
    scanf("%s",a);
    BTNode* root=CreatTree(a,&i);
    InOrder(root);
    return 0;
}

🌏2.4 流程图:

根据创建好的二叉树再采用中序遍历打印具体可以看【数据结构】—几分钟简单几步学会手撕链式二叉树(上)请添加图片描述


😽总结

请添加图片描述
😽Ending,今天的二叉树类型部分练习解析的内容就到此结束啦~,如果后续想了解更多,就请关注我吧,一键三连哦 ~

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

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

相关文章

小明给大家分享几个CSDN涨粉小技巧,期待大家多多涨粉

今天和大家一起来聊聊CSDN涨粉相关几个的技巧&#xff0c;希望对热爱技术分享&#xff0c;并且想快速涨粉提升自身曝光度的朋友们提供一些经验&#xff0c;本文都是自己的一些想法&#xff0c;有说的不对的地方希望大家指正&#xff01; 一、个人介绍 我叫小明&#xff0c;我的…

京东国际销售数据查询(京东国际行业/品牌数据分析)

根据京东平台官方数据显示&#xff0c;今年京东国际的贡献力度也高于以往。 京东618开门红5分钟&#xff0c;京东国际成交额已突破去年开门红前两小时的成交额&#xff0c;跨境酒水、跨境手机通讯、跨境箱包皮具等3个品类成交额同比增长超100%。&#xff0c;开门5分钟&#xff…

Unreal5 第三人称射击游戏 角色基础制作2

接上一篇 Unreal5 第三人称射击游戏 角色基础制作1 角色蹲伏效果 上面是需要的操作映射&#xff0c;蹲伏实现&#xff0c;首先要开启相应功能&#xff0c;你需要在角色移动组件上面开启可蹲伏 蹲伏还有一些其它设置&#xff0c;比如蹲下角色高度&#xff0c;蹲下以后行走的…

MySQL基础2

一.常见数据类型 数值类型&#xff1a; TINYINT&#xff1a;占用1字节&#xff0c;默认为有符号 BIT(M)&#xff1a;位类型&#xff1a;M指定位数&#xff0c;默认值为1&#xff0c;范围为1-64&#xff0c;bit类型在显示时&#xff0c;按照ASCII码对应的值进行显示。 FLOAT[(M,…

华为OD机试(41-60)老题库解析Java源码系列连载ing

华为OD机试算法题新老题库练习及源码 41.寻找相同子串42.找出经过特定点的路径长度43.全量和已占用字符集44.密钥格式化45.数字字符串组合倒序 郑重声明&#xff1a; 1.博客中涉及题目为网上搜索而来&#xff0c;若侵权&#xff0c;请联系作者删除。 源码内容为个人原创&#…

git --- git merge用法

1 git merge介绍 在Git中,合并是一个连接分叉历史的过程。它将两个或多个开发历史连接在一起。git merge命令可以帮助你把git分支创建的数据整合到一个分支中。git merge会将一系列的提交关联到一个统一的历史。 在上图中,有两个分支 master 和 feature。我们可以看到,我们…

《priority_queue》

本文主要介绍优先级队列的使用&#xff0c;以及一个TOPK问题的OJ 文章目录 一、priority_queue的介绍二、priority_queue的使用三、[数组中第k个大的元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) 一、priority_queue的介绍 优先队列是一种容器适配器…

代码创造童话--Python为六一儿童节送专属礼物

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 六一儿童节到啦&#xff0c;祝所有的朋友们六一儿童节快乐&#xff01; 在这个节日里&#xff0c;孩子们可以接受父母、老师、社会各界人士的关爱和祝福&#xff0c;同时也可以享受到各种各样的礼物和活动。Python作为一门…

第十五篇、基于Arduino uno,获取mpu6050三轴加速度、角速度、温度的数据——结果导向

0、结果 说明&#xff1a;先来看看串口调试助手显示的结果&#xff0c;第一个值是温度值&#xff0c;第二个值是X轴的加速度&#xff0c;第三个值是Y轴的加速度&#xff0c;第四个值是Z轴的加速度&#xff0c;第五个值是X轴的角速度&#xff0c;第六个值是Y轴的角速度&#xff…

C++库函数——string类

1. 简介 ①什么是string类 源文档 译&#xff1a; 1. 字符串是表示字符序列的类 2. 标准的字符串类提供了对此类对象的支持&#xff0c;其接口类似于标准字符容器的接口&#xff0c;但添加了专门用于操作单字节字符字符串的设计特性。 3. string 类是使用 char( 即作为它…

【六一】90后的你们还记得年少时的梦吗?还记得你们当初追的奥特曼吗?现在就让我们一起回味我们逝去的曾经吧!

迎面走来的是我们从未正式出过剧集&#xff0c;并附有“反派”盛名的大哥&#xff01;佐~~菲~~&#xff01; 还记得第一个登场&#xff0c;第一个进入我们的视野的那位吗&#xff1f;没错&#xff0c;那就是奥特曼 我的最爱~~~~~赛文&#xff01; 一度以为&#xff0c;曾经的那…

Bellhop 绘制传播损失

文章目录 前言一、相干传播损失&#xff08;TL&#xff09;基本算例1、环境文件2、绘制相干传播损失 二、相干、半相干和非相干传播损失&#xff08;TL&#xff09; 前言 上文我们讲述了 Bellhop 的使用以及使用 bellhop 绘制了声速剖面、声线轨迹及本证声线&#xff0c;本文我…

【SpringMVC】入门案例

前言: SpringMVC是隶属于Spring框架的一部分&#xff0c;主要是用来进行Web开发&#xff0c;是对Servlet进行了封装。 对于SpringMVC我们主要学习如下内容: SpringMVC简介请求与响应REST风格SSM整合(注解版)拦截器 SpringMVC是处于Web层的框架&#xff0c;所以其主要的作用…

用户验证FTP实验

用户FTP实验 目录 匿名用户验证&#xff1a; 本地用户验证&#xff1a; 本地用户访问控制&#xff1a; 匿名用户验证&#xff1a; 例&#xff1a;&#xff08;前提配置&#xff0c;防火墙关闭&#xff0c;yum安装&#xff0c;同模式vmware11&#xff09; 现有一台计算机huy…

数据结构算法-图技术点(图的算法实现)

先看 定义邻接表 //边 struct Edge {int AdjVertex;//邻接顶点int Weight;//权值Edge* next;//下一条边 };using VertexValue use define//顶点 struct Vertex {VertexValue value; // 顶点数据Edge* First;//获取第一条边 }; //邻接顶点 using AdjVertex Vertex*; //邻接…

自动驾驶嵌入式开发工程师:车载SOC开发修炼秘籍

声明&#xff1a;本文档是博主在开发学习过程中写的笔记&#xff0c;本意是便于以后开发复盘&#xff0c;参考《 ug1144-petalinux-tools-reference-guide》、《ug1085》、黑金Zynq UltraScale MPSoC 5EV开发板资料、英伟达官方资料。大佬勿喷 大佬勿喷 大佬勿喷&#xff01;&a…

【资料分享】RS-485 串行接口说明

面对大量可用的串行接口&#xff0c;可能很难理解它们之间的差异以及何时使用它们。正如我最喜欢的工程学教授经常说的那样&#xff0c;“标准的美妙之处在于有很多标准可供选择。” 今天的编码器比以往任何时候都更智能、更先进&#xff0c;要求工程师放弃更简单的正交增量传感…

智能网联环境下数据安全分析与建设思考

01安全概况 随着智能化程度不断提升&#xff0c;汽车正逐渐从传统意义上的交通工具演化为公路上的智能终端&#xff0c;核心部件也从发动机、变速箱、底盘上升为芯片、软件与数据。相关机构研究表明&#xff0c;目前全球市场搭载智能网联功能的新车渗透率约为45%&#xff0c;预…

160个CrackMe之001

吾爱中的逆向练习题 运行程序 有两个方式 一个是账号登入 一个是序列号输入 账号输入 方法一 爆破 我们先进行账号输入 这个是最简单的逆向 所以我们可以使用 字符串查找看看 先试用ollydbg打开 右键 ->查找 ->所有参考文本字符串 这里我们能发现有两个报错 我们还…

《C++ deque的介绍以及stackh和queue的模拟实现》

文章目录 一、容器适配器1.1 什么是适配器1.2 STL中stack和queue的底层结构1.3 deque的简单介绍1.3.1 deque的原理介绍1.3.2 deque的结构1.3.3 deque和vector以及list的对比1.3.4 为什么选择deque作为stack和queue的适配容器 二、stack的模拟实现三、queue的模拟实现 一、容器适…