二叉树专项练习

简介: 👩‍💻博客主页:[风起 风落](https://blog.csdn.net/qq_62939852?spm=1001.2101.3001.5343)的博客主页✨欢迎关注🖱点赞🎀收藏⭐留言✒👕参考网站:牛客网💻首发时间:🎞2022年8月18日🎠🎨你的收入跟你的不可替代成正比🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦💬给大家介绍一个求职刷题收割offer的地方👉[点击网站](https://www.nowcoder.com/link/pc_csdncpt_fqfl_c)

👩‍💻博客主页:风起 风落的博客主页

✨欢迎关注🖱点赞🎀收藏⭐留言✒

👕参考网站:牛客网

💻首发时间:🎞2022年8月18日🎠

🎨你的收入跟你的不可替代成正比

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

💬给大家介绍一个求职刷题收割offer的地方👉点击网站

@TOC

一、104. 二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

在这里插入图片描述返回它的最大深度 3 。
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int maxDepth(struct TreeNode* root){
    if(root==NULL)
    {
        return 0;
    }
   int left=maxDepth(root->left);
   int right=maxDepth(root->right);
   return left>right?left+1:right+1;
}
在这里插入图片描述主要是分治思想,大事化小,把其化成带有根节点的AA的左子树,A的右子树 ,再分别判断左子树与右子树的最大深度,取两者最大值+1即二叉树的最大深度

递归展开图

在这里插入图片描述

二、110. 平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

  在这里插入图片描述
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int maxDepth(struct TreeNode* root){
    if(root==NULL)
    {
        return 0;
    }
   int left=maxDepth(root->left);
   int right=maxDepth(root->right);
   return left>right?left+1:right+1;
}
bool isBalanced(struct TreeNode* root){
   if(root==NULL)
   {
       return true;
   }
   int leftdepth=maxDepth(root->left);
   int rightdepth=maxDepth(root->right);
   return abs(leftdepth-rightdepth)<2
   &&isBalanced(root->left)
   &&isBalanced(root->right);
}

本题也是使用了二叉树的最大深度,我本来的想法是跟上题差不多

求根节点的左子树 和根节点的右子树,但是后来我发现忽略了每个节点都要差一这个条件。

这道题也是使用了c语言求绝对值所使用的  abs

只有满足该点的左子树和左子树相差小于2并且左子树与右子树本身递归也相差小于2才成立

递归展开图

  在这里插入图片描述   在这里插入图片描述

三、二叉树遍历

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

输入描述:

输入包括1行字符串,长度不超过100。

输出描述:

可能有多组测试数据,对于每组数据,

输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。

每个输出结果占一行。

示例1

输入

abc##de#g##f###

输出

c b e g d f a

#include<stdio.h>
#include<stdlib.h>
typedef struct treenode
{
    char val;
    struct treenode*left;
    struct treenode*right;
}BTnode;
BTnode*tree(char *a,int*i)//创建二叉树
{
    if(a[*i]=='#')
    {
        (*i)++;//为#看作一个空格 ,跳过
        return NULL;
    }
    BTnode*root=(BTnode*)malloc(sizeof(BTnode));//在函数内创建二叉树结构体类型,最大程度上知道了二叉树的节点个数
        root->val=a[*i];
        (*i)++;//这里不要忘记将i+1 ,将a的值指向下一个
        root->left=tree(a,i);//两次循环调用
        root->right=tree(a,i);
    return root;//返回结构体指针,可以找到二叉树
}
void inorder(BTnode*root)//二叉树的中序遍历 递归
{
    if(root==NULL)
    {
        return ;
    }
    inorder(root->left);//左子树
    printf("%c ",root->val);//根
    inorder(root->right);//右子树
}
int main()
{
    char arr[40]={0};
    scanf("%s",arr);
    int i=0;//这里我们想要通过函数得到i的值 ,需要传址调用
    BTnode*root=tree(arr,&i);
    inorder(root);
    return 0;
}

首先就以本题的例子来说明,'#'代表空格

abc##de#g##f###

在这里插入图片描述  

递归展开图

  在这里插入图片描述
目录
相关文章
|
存储 物联网 网络性能优化
|
11月前
|
NoSQL 前端开发 Redis
单点登录云平台子系统集成方式
单点登录云平台子系统集成方式
433 0
|
监控 网络协议 网络安全
【从零开始的嵌入式生活】网络编程1——网络基础
【从零开始的嵌入式生活】网络编程1——网络基础
【从零开始的嵌入式生活】网络编程1——网络基础
|
监控 安全 项目管理
项目成功秘诀:高效管理策略确保按时交付
项目成功对企业生存发展至关重要,需要明确目标和范围,运用SMART原则和设计思维确保目标与市场需求相符。通过工作分解、优先级排序管理需求,建立变更和风险管理流程。制定详细项目计划,考虑约束条件、关键节点和风险。优化团队协作,明确角色责任,建立有效沟通机制,激励团队成员。实施PDCA循环控制项目进程,关注交付和复盘,以实现高质量的项目成果。
940 1
|
小程序 前端开发 API
小程序全栈开发中的RESTful API设计
【4月更文挑战第12天】本文探讨了小程序全栈开发中的RESTful API设计,旨在帮助开发者理解和掌握相关技术。RESTful API基于REST架构风格,利用HTTP协议进行数据交互,遵循URI、客户端-服务器架构、无状态通信、标准HTTP方法和资源表述等原则。在小程序开发中,通过资源建模、设计API接口、定义资源表述及实现接口,实现前后端高效分离,提升开发效率和代码质量。小程序前端利用微信API与后端交互,确保数据流通。掌握这些实践将优化小程序全栈开发。
539 0
|
弹性计算 安全 固态存储
阿里云服务器怎么买?自定义购买与通过活动购买流程图解及注意事项
本文以图文形式介绍了通过阿里云服务器产品页面自定义购买云服务器和通过阿里云的优惠活动购买云服务器的流程,同时介绍了一些购买过程中应该注意的注意事项,适合还未使用过阿里云服务器的新手用户们参考。
554 0
阿里云服务器怎么买?自定义购买与通过活动购买流程图解及注意事项
|
存储 分布式计算 资源调度
浅谈实时计算
浅谈实时计算
995 0
浅谈实时计算
|
SQL 消息中间件 存储
网易游戏基于 Flink 的流式 ETL 建设
网易游戏流式 ETL 建设实践及调优经验分享~
网易游戏基于 Flink 的流式 ETL 建设
|
开发工具 git
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
327 0

热门文章

最新文章