牛客.KY11二叉树遍历、 LeetCode104.二叉树的最大深度 ,110平衡二叉树

二叉树实操小练习~这里对二叉树的遍历要有一定的理解,如果还不熟悉的小伙伴可以看看我的这篇博客:数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~ (✧∇✧) Q_Q-CSDN博客

 

牛客.KY11二叉树遍历

题目描述:这里要求写出全过程

 思路:这里我们用到两个函数:CreateTree和InOrder,CreateTree将输入的字符串转化为二叉树的前序遍历,InOrder用于对已经创建好的二叉树进行后续遍历并输出。具体实现看如下代码:

#include<stdio.h>//二叉树的声明与定义
typedef struct TreeNode
{struct TreeNode* left;struct TreeNode* right;char val;
}TNode;//用于将输入的字符进行前序遍历
TNode* CreateTree(char* a,int* pi)
{if(a[*pi]=='#')//这里通过传进来的i来实现对数组a的元素挪动{++(*pi);return NULL;}//为开辟一个二叉树而创建的指针变量TNode* root=(TNode*)malloc(sizeof(TNode));if(root==NULL){printf("malloc fail\n");exit(-1);}
//将不是'#'的字符赋予此时所对应的二叉树的val,进行前序遍历root->val=a[*pi];++(*pi);root->left = CreateTree(a,pi);root->right = CreateTree(a,pi);return root;//返回开辟好的根节点
}//对二叉树进行中序遍历并输出,完成题目的任务
void InOrder(TNode* root)
{if(root==NULL)return;InOrder(root->left);printf("%c ",root->val);InOrder(root->right);
}//上述函数都在主函数中实现
int main()
{char str[100];scanf("%s",str);int i=0;TNode* root=CreateTree(str,&i);InOrder(root);return 0;
}

 LeetCode104.二叉树的最大深度

题目描述:

题目所给的二叉树的定义:

 

 基本思路:如果树为空,则深度为0;如果树不为空,则树的深度等于左子树,右子树中的最大深度+1.主要难点在于函数的递归,代码解释:

int maxDepth(struct TreeNode* root) 
{if(root==NULL)return 0;
//遍历左右子树,直到为空,返回左子树,右子树中较大的后+1(算上自身)int leftmaxDepth=maxDepth(root->left);int rightmaxDepth=maxDepth(root->right);return leftmaxDepth>rightmaxDepth?leftmaxDepth+1:rightmaxDepth+1;
}

 函数递归展开图:(如图中的数为例,红色为递推部分,蓝色为回溯部分)

LeetCode110.平衡二叉树 

题目描述:

 

 题目所定义的二叉树:

思路:整体的左右子树的深度小于等于1,部分的左子树的左右子树的深度小于等于1,部分的右子树的左右子树的深度小于等于1 ,代码解释:

int maxDepth(struct TreeNode* root){if(root==NULL)return 0;int leftmaxDepth=maxDepth(root->left);int rightmaxDepth=maxDepth(root->right);return leftmaxDepth>rightmaxDepth?leftmaxDepth+1:rightmaxDepth+1;}
bool isBalanced(struct TreeNode* root)
{if(root==NULL)return true;//记录左右子树的最大深度int leftmaxDepth=maxDepth(root->left);int rightmaxDepth=maxDepth(root->right);return abs(leftmaxDepth-rightmaxDepth)<2//分别满足这三个条件,才能满足平衡二叉树&&isBalanced(root->left)&&isBalanced(root->right);
}

博客到这里也是结束了,喜欢的小伙伴可以点赞加关注支持下博主,这对我真的很重要~~

 

 

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

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

相关文章

对比分析ChatGPT 和文心一言。

目录 ChatGPT 和文心一言哪个更好用&#xff1f; ChatGPT 文心一言 对人工智能的看法 ChatGPT 和文心一言哪个更好用&#xff1f; ChatGPT和文心一言是目前两种比较流行的大语言模型&#xff0c;他们的出现迎来了人工智能时代。那么&#xff0c;这两种语言哪种更加好用一些…

Mybatis源码总结

mybatis Mybatis是一个orm框架&#xff0c;帮助我们更好的在java中编写和管理SQL语句 主要的运行过程&#xff1a; 主配置文件&#xff0c;配置mapper文件的位置&#xff0c;以及数据源&#xff0c;缓存&#xff0c;插件等配置信息&#xff0c;项目运行起来后会解析该文件&am…

数据库Mysql学习day01课堂笔记

一、数据库概述及数据准备 1.什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么? 数据库: 英文单词DateBase,简称DB。按照一定格式存储数据的一些文件的组合。顾名思义,存储数据的仓库,实际上就是一堆文件,这些文件中存储了具有特定格式的数据。 数…

Jtti:Linux内核怎么通过inline hook实现隐藏进程

在Linux内核中通过inline hook来隐藏进程是一种比较敏感和高级的操作&#xff0c;需要深入理解Linux内核的运作原理和对内核的深度了解。请注意&#xff0c;修改内核行为可能会导致系统不稳定&#xff0c;并且这种操作可能违反系统的安全策略&#xff0c;因此在进行此类操作之前…

民族服装数据研究:市场销售规模将突破百亿元

民族服饰文化内涵丰富&#xff0c;包括制作原料、纺织工艺、印染工艺、刺绣工艺、图案纹样、色彩表现、饰品工艺、文化价值等因素。我国民族服装在经历了过去30年全面工业化、经济高速增长、服装定制人口激增、大量生产、大量服装定制制消费到全国中产阶级化&#xff0c;人们对…

前端开发 5: Vue.js 框架

在前端开发中&#xff0c;Vue.js 是一个流行且灵活的 JavaScript 框架&#xff0c;用于构建用户界面。它采用了组件化的开发方式&#xff0c;使得前端开发更加模块化和可维护。在本篇博客中&#xff0c;我将为你介绍 Vue.js 的基础知识和常用技巧&#xff0c;帮助你更好地掌握前…

文档翻译网站有哪些?这些工具高效翻译

文档翻译网站有哪些&#xff1f;随着全球化的加速&#xff0c;跨语言沟通变得越来越重要。然而&#xff0c;语言差异常常成为我们与世界各地人们交流的障碍。为了解决这个问题&#xff0c;文档翻译软件应运而生。今天&#xff0c;我们就来介绍一些受欢迎的文档翻译软件&#xf…

【Docker】安装nacos以及实现负载均衡

&#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 前言 一.nacos单个部署 1.镜像拉取 …

4.C++类和对象

深拷贝和浅拷贝的简单理解&#xff1a;

SpringBoot多环境配置及日志记录器

Spring Boot多环境配置 Spring Boot的针对不同的环境创建不同的配置文件&#xff0c; 语法结构&#xff1a;application-{profile}.properties profile:代表的就是一套环境 需求 application-dev.yml 开发环境 端口8090 application-test.yml 测试环境 端口8091 applica…

广东省第三届职业技能大赛“网络安全项目”B模块--数字取证解析

广东省第三届职业技能大赛“网络安全项目”B模块任务书 PS: 关注鱼影安全第一部分 网络安全事件响应第二部分 数字取证调查任务 3: 网络数据包分析取证解析:第三部分 应用程序安全:需要环境可以私信博主~PS: 关注鱼影安全 模块 B 竞赛项目试题 本文件为:广东省第三届职业技…

如何用mysql或者zk分配​​机器id

大家好&#xff0c;我是三叔&#xff0c;新的一年很高兴又和大家见面了&#xff0c;祝各位读者龙年大吉。 在 MySQL 中&#xff0c;可以使用自增主键来为每个记录分配唯一的机器 ID。创建一个包含自增主键的表&#xff0c;每当插入新记录时&#xff0c;MySQL 会自动为其分配一…

提纲框架写作方法

论文提纲 论文提纲的意义 有利于检查构思有利于调整修改和写作 拟定提纲的目的 拟标题写总论点做总安排&#xff1a;几个方面&#xff0c;什么顺序做下位论点&#xff1a;每个项目的下位论点&#xff0c;直到段一级&#xff0c;写段的论点句考虑各段安排&#xff0c;把材料…

2024 前端高频面试题之 HTML/CSS 篇

【前言】随着市场的逐渐恶劣&#xff0c;通过总结面试题的方式来帮助更多的coder&#xff0c;也是记录自己的学习过程&#xff0c;温故而知新。欢迎各位同胞大大点评补充~ 前端面试题之 HTML/CSS 篇 1、HTML 语义化&#xff1f;2、块级元素&内联样式3、盒子模型的理解&…

机器学习:holdout法(Python)

import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder, StandardScaler # 类别标签编码&#xff0c;标准化处理 from sklearn.decomposition import PCA # 主成分分析 import matplotlib.pyplot as plt from sklearn.model_selection impor…

springboot 原理分析之自动配置

一、Condition Condition 是在 Spring 4.0 增加的条件判断功能&#xff0c;通过这个可以功能可以实现选择性的创建 Bean 操作。比如说&#xff0c;只有满足某一个条件才能创建这个 Bean&#xff0c;否则就不创建。 SpringBoot 是如何知道要创建哪个 Bean 的&#xff1f;比如 Sp…

openGauss:准备知识1【IP地址/SSH协议/PuTTY安装和使用】

最近研究在openEuler 22.03 LTS上使用openGauss数据库。如果想要远端访问服务器&#xff0c;那么就先要了解IP地址、SSH协议等内容。 IP代表“Internet Protocol”&#xff0c;是一种网络协议&#xff0c;它定义了计算机在网络上的地址和数据传输方式。简言之&#xff0c;可以…

JAVA正则表达式第二个作用:爬取

目录 本地数据爬取&#xff1a; 本地爬取练习&#xff1a; 网络爬取&#xff1a; ----- 以下为均本地数据爬取&#xff1a; 带条件爬取 贪婪爬取和非贪婪爬取&#xff1a; 例题 1&#xff1a;使获取 1 为不贪婪 *例题 2&#xff1a;使获取 0、1 都为不贪婪 之前介绍了正…

Linux 系统中忘记了用户密码,可以通过以下步骤来重置密码

如果你在 Linux 系统中忘记了用户密码&#xff0c;可以通过以下步骤来重置密码&#xff1a; 通过 root 用户重置密码&#xff1a; 进入恢复模式&#xff1a; 重新启动计算机。在 GRUB 启动画面选择引导项时&#xff0c;选择 "恢复模式" 或 "恢复模式 with netw…

【数据结构】- 单链表

先创建好SList.c、Test.c两个源文件和SList.h一个头文件。 SList.c和Test.c一样 SList.h 文件 在SList.h加上 1.单链表打印 SList.h SList.c 思路&#xff1a; 逻辑图&#xff08;之后经常用到&#xff09;&#xff1a; 物理图&#xff1a; 为了方便运行Test.c中的运行还要在…