牛客.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.hqwc.cn/news/415587.html

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

相关文章

VB6.0报错:操作符AddressOf使用无效

VB调试&#xff0c;尝试调用DLL中的方法并带有回调函数&#xff0c;报错提示&#xff1a; 操作符AddressOf使用无效 代码&#xff1a; Private Sub btnScan_Click()... WCHBLEStartScanBLEDevices AddressOf callBackEnd Sub This function is called from the dll Public Fu…

[笔记]深度学习入门 基于Python的理论与实现(一)

代码仓库 gitee 1. python 入门 1.5之前是python安装和基础语法, 我直接跳过了 1.5 Numpy 深度学习中经常出现数组和矩阵运算&#xff0c;Numpy 的数组类 numpy.array 提供了很多便捷的方法 1.5.1 导入 Numpy import numpy as np1.5.2 生成 Numpy 数组 np.array()&#xf…

Java进阶-Tomcat发布JavaWeb项目

对于云服务器&#xff0c;程序员一般不会陌生&#xff0c;如果项目需要发布到现网&#xff0c;那么服务器是必不可缺的一项硬性条件&#xff0c;那么如何在云服务器上部署一个项目&#xff0c;需要做哪些配置准备&#xff0c;下面就由本文档为大家讲解&#xff0c;本篇以Tomcat…

机器学习周刊第六期:哈佛大学机器学习课、Chatbot Ul 2.0 、LangChain v0.1.0、Mixtral 8x7B

— date: 2024/01/08 — 吴恩达和Langchain合作开发了JavaScript 生成式 AI 短期课程&#xff1a;《使用 LangChain.js 构建 LLM 应用程序》 大家好&#xff0c;欢迎收看第六期机器学习周刊 本期介绍10个内容&#xff0c;涉及Python、机器学习、大模型等,目录如下&#xff…

ycsb压测mongodb

下载解压 https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-mongodb-binding-0.17.0.tar.gz tar -zxvf ycsb-mongodb-binding-0.17.0.tar.gzycsb提前已经在workload文件夹下准备好了几个压测场景分别对应workload[a:f] workloads/workloada 样例 …

Open CASCADE学习|显示模型

目录 1、编写代码 Viewer.h Viewer.cpp ViewerInteractor.h ViewerInteractor.cpp helloworld.cpp 2、配置 3、编译运行 1、编写代码 Viewer.h #pragma once ​ #ifdef _WIN32 #include <Windows.h> #endif ​ // Local includes #include "ViewerInteract…

热轧钢板、钢管测长仪 高温检测无压力

热轧钢管、钢板等轧材温度是非常高的&#xff0c;在线测长仪可对其进行在线检测&#xff0c;实现生产中的测量&#xff0c;同时也可给剪切机输送数据&#xff0c;帮助裁切。 测长仪是基于机器视觉的测量设备&#xff0c;能够拍摄被测物的清晰图片&#xff0c;并显示&#xff0c…

【JavaEE进阶】 依赖注⼊DI详解

文章目录 &#x1f334;什么是依赖注入&#x1f384;依赖注入的三种方法&#x1f6a9;属性注⼊(Field Injection)&#x1f6a9;构造⽅法注⼊&#x1f6a9;Setter注⼊&#x1f6a9;三种注⼊的优缺点 &#x1f333;Autowired存在的问题&#x1f332;解决Autowired存在的问题&…

【Linux】进程的概念 进程状态 进程优先级

Content 一、什么是进程1. 进程的概念2. 进程的描述 - 进程控制块&#xff08;PCB&#xff09;3. Linux下的进程 二、进程状态1. 教科书中的进程状态运行状态阻塞状态挂起状态 2. Linux下的进程状态R&#xff08;running&#xff09;- 运行状态S&#xff08;sleeping) - 睡眠状…

MySQL 多版本并发控制 MVCC

MVCC出现背景 事务的4个隔离级别以及对应的三种异常 读未提交&#xff08;Read uncommitted&#xff09; 读已提交&#xff08;Read committed&#xff09;&#xff1a;脏读 可重复读&#xff08;Repeatable read&#xff09;&#xff1a;不可重复读 串行化&#xff08;Se…

Yield Guild Games 宣布与区块链游戏中心 Iskra 建立战略合作伙伴关系

Yield Guild Games (YGG) 宣布将向 Iskra 引入其任务系统&#xff0c;Iskra 是一个 Web3 游戏中心和发布平台&#xff0c;拥有超过 400 万注册钱包和 10 万月度活跃用户 (MAU)。在 LINE、Kakao、Wemade 和 Netmarble 等公司的支持下&#xff0c;Iskra 将游戏玩家和游戏工作室聚…