首页 > 编程语言 >代码随想录算法训练营第十四天 | 226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度

代码随想录算法训练营第十四天 | 226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度

时间:2024-07-16 18:27:25浏览次数:14  
标签:right return 第十四天 二叉树 深度 NULL root left

226.翻转二叉树

题目:. - 力扣(LeetCode)

思路:前序遍历

代码:

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
    if(root!=NULL){
        swap(root->left,root->right);
        invertTree(root->left);
        invertTree(root->right);
    }
    return root;
    }
};

101. 对称二叉树

题目:. - 力扣(LeetCode)

思路:左右两棵子树同时遍历

代码:

class Solution {
public:
    bool compare(TreeNode* left,TreeNode* right){
        if(left==NULL&&right!=NULL) return false;
        else if(left!=NULL&&right==NULL) return false;
        else if(left==NULL&&right==NULL) return true;
        else if(left->val!=right->val) return false;
        bool outside=compare(left->left,right->right);
        bool inside=compare(left->right,right->left);
        bool isSame=inside&&outside;
        return isSame;
    }
    bool isSymmetric(TreeNode* root) {
    if(root==NULL)
    return true;
    return compare(root->left,root->right);
    }
};

104.二叉树的最大深度

题目:. - 力扣(LeetCode)

思路:后序遍历,计算最大高度

代码:

class Solution {
public:
    int maxDepth(TreeNode* root) {
    if(root==NULL) return 0;
    int leftdep=maxDepth(root->left);
    int rightdep=maxDepth(root->right);
    return max(leftdep,rightdep)+1;
    }
};

111.二叉树的最小深度

题目:. - 力扣(LeetCode)

思路:和求最大深度大致相同,不过要注意判断是否是叶子结点

代码:

class Solution {
public:
    int minDepth(TreeNode* root) {
    if(root==NULL) return 0;
    int leftdep=minDepth(root->left);
    int rightdep=minDepth(root->right);
    if(root->left!=NULL&&root->right==NULL)
    return leftdep+1;
    else if(root->left==NULL&&root->right!=NULL)
    return rightdep+1;
    else
    return min(leftdep,rightdep)+1;
    }
};

标签:right,return,第十四天,二叉树,深度,NULL,root,left
From: https://blog.csdn.net/dtgfhfd/article/details/140473440

相关文章

  • 「代码随想录算法训练营」第十二天 | 二叉树 part2
    226.翻转二叉树题目链接:https://leetcode.cn/problems/invert-binary-tree/题目难度:简单文章讲解:https://programmercarl.com/0226.翻转二叉树.html视频讲解:https://www.bilibili.com/video/BV1sP4y1f7q7题目状态:通过个人思路:类似二叉树的层序遍历的变形,创建一个队列,先......
  • 咬文嚼图式的介绍二叉树、B树/B-树
    前言因为本人天资愚钝,所以总喜欢将抽象化的事务具象化表达。对于各类眼花缭乱的树,只需要认知到它们只是一种数据结构,类似数组,切片,列表,映射等这些耳熟能详的词汇。对于一个数据结构而言,无非就是增删改查而已,既然各类树也是数据结构,它们就不能逃离增删改查的桎梏。那么,为什么我们......
  • 免费图床深度解析:高速 、稳定、体验上佳、速度、长期使用的绝佳选择
    在当今这个全面数字化的互联网时代,图片已然成为信息传递过程中不可或缺的重要组成部分。不管是用于展示产品的独特之处、分享生活中的美妙瞬间,还是在各类文档与网页中增强视觉效果,图片都发挥着至关重要的作用。然而,随之而来的图片存储与分享的难题,时常让我们感到烦恼。想象一下,您......
  • 深度学习全景进阶:Python深度学习
    近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。注意力机制、Transformer模型(BERT、GPT-1/2/3/3.5/4、DETR、ViT、SwinTransformer等)、生成式模型(变分自编码器VAE、生成式对抗网络GAN、扩散模型Di......
  • 路径规划 | 基于DQN深度强化学习算法的路径规划(Matlab)
    目录效果一览基本介绍程序设计参考文献效果一览基本介绍DQN路径规划算法基于深度强化学习算法的路径规划matlab2023b栅格环境,走迷宫,可以通过窗口界面方便观察交互过程,代码注释详尽。程序设计完整源码和数据私信博主回复基于DQN深度强化学习算法的路径规划(Ma......
  • 数据结构(Java):力扣&牛客 二叉树面试OJ题
    目录1、题一:检查两棵树是否相同 1.1思路分析1.2代码2、题二:另一颗树的子树2.1思路分析 2.2代码3、题三:翻转二叉树3.1思路分析3.2代码4、题四:判断树是否对称4.1思路分析 4.2代码 5、题五:判断是否为平衡二叉树5.1思路分析5.1.1平衡二叉树概念5.1.......
  • 动手学深度学习6.4 多输入多输出通道-笔记&练习(PyTorch)
    以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。本节课程地址:21卷积层里的多输入多输出通道【动手学深度学习v2】_哔哩哔哩_bilibili本节教材地址:6.4.多输入多输出通道—动手学深度学习2.0.0documentation(......
  • 深度学习中的正则化技术 - 参数绑定和参数共享篇
    序言在深度学习的探索之旅中,如何高效地管理模型的参数,以减少计算成本、提升训练效率并防止过拟合,一直是研究者们关注的焦点。参数绑定与参数共享作为两种重要的参数优化策略,应运而生。参数绑定通过构建参数间的直接或间接联系,使模型的不同部分能够共享或依赖某些参数的变化......
  • Day 13 二叉树part01
    Day13二叉树part01二叉树的递归遍历这个用递归就好,现在写起来基本没问题二叉树的迭代遍历这个是重点,今天写的时候居然一次写出来了,多刷还是有用的。前中后三种遍历方式,其迭代版本的难度排序前<中<后。所以写的时候也是按这个顺序去做的。144.二叉树的前序遍历使用一......
  • 算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
    1.RNN(RecurrentNeuralNetwork)时间轴1986年,RNN模型首次由DavidRumelhart等人提出,旨在处理序列数据。关键技术循环结构序列处理长短时记忆网络(LSTM)和门控循环单元(GRU)核心原理RNN通过循环结构让网络记住以前的输入信息,使其能够处理序列数据。每个节点不仅接收当前......