leetcode 初级算法 树

LeetCode卡片探索-初级算法 卡片探索-初级算法数组删除排序数组中的重复项买卖股票的最佳时机 II字符串链表树排序和搜索动态规划设计问题数学其他 LeetCode上知识卡片之初级算法的刷题记录 数组 删除排序数组中的重复项 难点在于原地删除的同时不想时间复杂度太高的话,可以考虑双指针。一个指针遍历数组判断是否为重复元素,一个指针用来搜集不重复元素并把他们安排到数组前列。 class Solution: def removeDuplicates(self, nums: List[int]) -> int: i 阅读详情

二叉树的最大深度

recursive method:
AC代码:

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if(root==NULL) return 0;
        int lDepth = maxDepth(root->left);
        int rDepth = maxDepth(root->right);
        return 1+(lDepth>rDepth?lDepth:rDepth);
    }
};

验证二叉搜索树

AC代码:

class Solution {
public:
    bool isValidBST(TreeNode* root) {
        //左子树右子树都是BST,且左的最大小于root,右的最小大于root
        if(root==NULL) return true;    //空树是BTS
        if(!isValidBST(root->left)||!isValidBST(root->right))
            return false;
        TreeNode* lmax=max(root->left),*rmin=min(root->right);
        if(!(lmax==NULL||lmax->val<root->val))
            return false;
        if(!(rmin==NULL||rmin->val>root->val))
            return false;
        return true;
        
    }
    //找以root为根的树的最小值所在节点的指针
    TreeNode* min(TreeNode* root)
    {
        if(root==NULL)
            return NULL;
        if(root->left==NULL)
            return root;
        return min(root->left);
    }
        TreeNode* max(TreeNode* root)
    {
        if(root==NULL)
            return NULL;
        if(root->right==NULL)
            return root;
        return max(root->right);
    }
};

对称二叉树

错误代码:

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        //左右两个子树各自对称,且这两个是镜像的
        if(root==NULL) return true;
        if(!(isSymmetric(root->left)&&isSymmetric(root->right)))
            return false;   //如果一个不对称,就整体不对称
        queue<int> vals;
        TreeNode* p1 = root->left,*p2=root->right;
        leftVis(p1,vals);
        return rightVis(p2,vals);
    }
    void leftVis(TreeNode* root,queue<int>& q)
    {
        if(root==NULL) return;
        else
        {
            leftVis(root->left,q);
            q.push(root->val);
            leftVis(root->right,q);
        }
    }
    bool rightVis(TreeNode* root,queue<int>& q)
    {
        if(root!=NULL)
        {
            if(!rightVis(root->right,q)) return false;
            if(q.empty()) return false;
            int cur = q.front();
            q.pop();
            if(root->val!=cur)
                return false;
            if(!rightVis(root->left,q)) return false;
        }
        if(q.empty()) return true;
        else return false;
    }
};

二叉树的层次遍历

思路:
层次遍历需要queue,不同的深度放在不同的子vector中,因此也需要记录该节点的深度,所以可以使用pair队来保存信息。
注意当给出的树空时这种corner case。
当某个深度第一次遇到时,先要创建这个vector。

AC代码:

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        //将pair对入队
        vector<vector<int>> ans;
        if(root==NULL) return ans;
        queue<pair<TreeNode*,int>> q;
        q.push(make_pair(root,0));
        int depth = -1;
        while(!q.empty())
        {
            pair<TreeNode*,int> p = q.front();
            int curDepth = p.second;
            TreeNode* curNode = p.first;
            q.pop();
            //if:这个高度第一次出现,创建子链表
            if(curDepth!=depth)
            {
                depth = curDepth;
                vector<int> newDepth;
                newDepth.push_back(curNode->val);
                ans.push_back(newDepth);
            }
            else   //直接往子链表insert
            {
                ans[depth].push_back(curNode->val);
            }
            if(curNode->left!=NULL) q.push(make_pair(curNode->left,curDepth+1));
            if(curNode->right!=NULL) q.push(make_pair(curNode->right,curDepth+1));
        }
        return ans;
    }
};

将有序数组转换为二叉搜索树

错误代码(malloc-demalloc错误)

class Solution {
public:
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        //如果nums中没有数字,则返回空。有一个,则直接创建返回。
        //有两个或两个以上:如果是奇数个,则中间的作为根,偶数个随便
        int len = nums.size();
        if(len==0)
            return NULL;
        else if(len==1)
            { TreeNode* p = (TreeNode*)malloc(sizeof(TreeNode));
             p->val = nums[0];
             p->left =p->right= NULL;
             return p;
            }
        else
        {
            vector<int> leftN,rightN;
                int bound = len%2;
                TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
                root->val = nums[bound];
                for(int i = 0;i<bound;i++) leftN.push_back(nums[i]);
                for(int i = bound+1;i<len;i++) rightN.push_back(nums[i]);
                root->left = sortedArrayToBST(leftN);
                root->right = sortedArrayToBST(rightN);
            return root;
        }
    }
}

;

揭秘N531:这颗不到2毛钱的国产栅极驱动器,如何成为功率开关的“全能搭档”? 本文深入解析了国产栅极驱动器N531如何成为功率开关的“全能搭档”。针对MOSFET和IGBT等电压驱动器件在实际应用中需要大电流实现快速开关的核心痛点,N531凭借±500mA的强劲驱动能力、宽电压供电及高兼容性,有效降低开关损耗,提升系统效率与可靠性。文章通过实战案例与设计指南,阐述了这颗高性价比芯片在简化设计、降低成本方面的显著优势。 阅读详情

相关推荐

QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

用Qt和QtWebApp能够实现在C++中开发HTTP Web服务器应用程序。 首先,需要先安装Qt的软件开发工具包。点此下载 其次,下载最新的QtWebApp库。点此下载 下载并解压缩QtWebApp ZIP文件。你将会看到: 如何使用QtWebApp 1)将QtWebApp.zip文件解压到文件夹中,并创建一个名为“ MyFirstWebApp”的新Qt控制台项目。然后,建立如下文件结构: 2)将以下行添加到MyFirstWebApp项目的项目文件中: QT += network include(

饭的笔记本 2万+

Leetcode 初级算法 - 树

Leetcode 初级算法 - 树 原始地址:https://github.com/jerrylususu/leetcode-easy 二级标题格式:[章节内题号] [题库内题号] [题目标题] 1 104 二叉树的最大深度 我的思路:直接递归 注意下 base case public int maxDepth(TreeNode root) { if(root==null) return ...

Nekonull's Place 544

别再手动巡检了!用Zabbix 5.0 + SNMPv2自动监控华为S系列交换机(附完整命令集)

本文详细介绍了如何利用Zabbix 5.0与SNMPv2实现华为S系列交换机的自动化监控,告别低效的手动巡检。通过配置SNMPv2c安全基线、核心功能启用及Zabbix Server端深度配置,构建7×24小时监控体系,实时预警接口状态、流量波动等关键指标,大幅提升运维效率与故障响应速度。

weixin_30940783的博客 628

LeetCode初级算法之树

LeetCode初级算法之树写在刚刚开始二叉树的最大深度验证二叉搜索树对称二叉树 写在刚刚开始 从今天开始记录一些leetcode上的刷题记录和心得,小菜鸡也有成为大牛的梦想!从初级算法的树开始,之前的就不记录了,准备一个月刷到中级算法结束,加油!! 二叉树的最大深度 Question: 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指...

Crayonshin的博客 313

彻底解决0x80070005错误代码:全面分析与实战指南

0x80070005错误代码虽然令人头疼,但通过上述方法,我们完全有能力将其攻克。从检查磁盘空间、设置账号权限,到运行疑难解答和系统文件检查器,再到调整相关服务状态,每一步都是解决这一问题的关键。希望本文能为你提供有力的帮助,让你在使用Windows系统的过程中更加顺畅无忧。

nntxthml的博客 6932

树莓派计算模块摄像头连接与配置全攻略:从硬件跳线到软件驱动

在嵌入式视觉项目中,摄像头模组的连接与驱动是图像采集和视频分析的基础。其核心原理是通过CSI-2高速串行接口协议传输图像数据,并依赖I2C总线进行传感器寄存器配置。这一技术方案的价值在于为工业控制、机器人等嵌入式设备提供了稳定、高性价比的视觉感知能力。在实际应用中,开发者常面临摄像头无法识别、I2C通信失败等挑战,尤其是在使用树莓派计算模块时,其硬件接口需要通过I/O板引出,配置过程涉及设备树参数调整等关键步骤。本文聚焦于解决这些实际问题,详细拆解了从硬件连接到软件驱动的完整流程,特别是针对CM4、CM3+

weixin_29184075的博客 333

leetcode初级算法——树

(题目源自leetcode,方法都是自(cai)己(ji)写的,可能比较符合菜鸡们的思路) 警示自己: 深度优先 广度优先一定要熟练 先序中序后序的遍历也一定要熟练 1.二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 class S

qq_37876289的博客 267

MTK Linux DRM分析(十一)- MTK KMS Panel显示屏驱动

面板扩展(Panel Extension)是指 MediaTek 在标准 DRM 面板驱动框架之上添加的定制化功能模块。

iTom1900 1679

LeetCode初级算法训练-树(完成)

简介 上一篇 : LeetCode初级算法训练-链表 下一篇 : LeetCode初级算法训练-xxxxxx 本来想重初中级和企业面试算法开始的,但是最后还是选择从基础的开始,因为我们并不是为了刷题而刷题,而是在刷题过程中锻炼一种算法思维,在大量的训练之后形成一种对算法的独特见解,培养那种对算法的的敏感度,看到题目,大脑中可以浮现一个解题蓝图,而且从初级开始慢慢建立信心,而且这也是在为后边复杂算法的解题思路打基础。 LeetCode初级算法简介 如果你也想训练自己的算法思维,也可以加入我,从初级算法开始,开

Darksider博客 413

Ansys HFSS 中的同轴电缆仿真

准确模拟它们的行为对于确保 RF 系统的最佳性能至关重要。在本博客中,我们将介绍在 HFSS 中设置同轴电缆仿真并绘制插入损耗、回波损耗和电场分布的过程。将波端口分配给同轴线的两端以激励模型,并定义了从 1 GHz 到 20 GHz 的频率扫描以评估其宽带性能。铜分配给内部导体,铝分配给外部导体。介电区域使用 PTFE 定义,其相对介电常数为 2.1,损耗角正切为 0.00022。仿真完成后,结果用于绘制整个频率范围内的回波损耗和插入损耗。此外,电介质内的电场分布也被绘制和动画化。

jkh920184196的博客 1907

GNSS数据处理新手避坑:手把手教你用GAMP_GOOD下载IGS/MGEX数据(附.cfg文件详解)

本文详细介绍了如何使用GAMP_GOOD进行GNSS数据处理,从基础配置到高级参数调优,帮助新手避开常见错误。内容包括软件安装、配置文件详解、数据源选择、测站文件配置以及性能优化技巧,特别适合GNSS数据处理初学者快速上手。

weixin_30338481的博客 390

Leetcode初级算法——树

二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度3 相关标签:树 深度优先搜索 广度优先搜索 二叉树 #pragmaonce #include<algorithm> #include<queue> ...

杉杉coming! 332

R数据分析:潜在剖面分析LPA的做法与解释

Latent Profile Analysis (LPA) tries to identify clusters of individuals (i.e., latent profiles) based on responses to a series of continuous variables (i.e., indicators). LPA assumes that there are unobserved latent profiles that generate patterns of resp.

Codewar的博客 1万+

LeetCode初级算法题——树类——算法总结

LeetCode初级算法字符串类——算法总结 PS:算法并非原创,总结的本意在于温故知新、巩固知识。侵删。 1、二叉树的深度 使用python解答,代码如下: # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class

weixin_44201830的博客 322

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

[leetcode]初级算法——树

二叉树的最大深度Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.Note: A leaf is a node with no chi...

weixin_40649618的博客 218

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LeetCode初级算法--树01:二叉树的最大深度

LeetCode初级算法--树01:二叉树的最大深度 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货 csdn:https://blog.youkuaiyun.com/baidu_31657889/ csdn:https://blog.youkuaiyun.com/abcgkj/ github:https://github.com/aimi-cn/AILearners...

小明的博客 1071

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Leetcode刷题:初级算法之树

目录题目二叉树的最大深度二叉树的层次遍历对称二叉树总结 题目 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 刚开始使用了广度优先的算法,虽然是work的,但是时间超出了限制。 更好的方法是使用递归,深度...

qq_35574010的博客 455

【LeetCode】初级算法:树

1. 二叉树的最大深度 用时:0ms class Solution { public int maxDepth(TreeNode root) { // 返回左右子树深度的最大值,再加1 if(root!=null){ return Math.max(maxDepth(root.left),maxDepth(root.right...

widiot的博客 498

[leetcode初级算法]树总结

二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回它的最大深度 3 。 /** * Definition for a binary tree node. * struct Tre...

summer2day的博客 281

LeetCode-探索-初级算法-树-3. 对称二叉树(个人做题记录,不是习题讲解)

LeetCode-探索-初级算法-树-3. 对称二叉树(个人做题记录,不是习题讲解) LeetCode探索-初级算法:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/ 对称二叉树 语言:java 思路:尝试写了一个非递归的,但应该中间判断有问题,一直是错的,花费时间过多,得不偿失...

Ashiamd的博客 504

算法入门之树(Python)【初级算法——树】【力扣练习】【蓝桥杯练习】

文章目录一、二叉树的最大深度(简单)二、验证二叉搜索树(中等)三、对称二叉树(简单)四、二叉树的层序遍历(中等)五、将有序数组转换为二叉搜索树(简单) 一、二叉树的最大深度(简单) 题目: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/pr

youngwyj的博客 881

LeetCode初级算法-树-2

题目:验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 ...

小太阳啊^_^ 169

LeetCode初级算法(树篇)

目录 二叉树的最大深度 验证二叉搜索树 对称二叉树 二叉树的层次遍历 将有序数组转换为二叉搜索树 二叉树的最大深度 二叉树,所以可以考虑用递归来做。由于根节点已经算过了,所以需要加上1;每次返回都是以递归时的节点作为根节点进行判断的最大深度。...

weixin_30266885的博客 340

Leetcode——初级算法(树)

Leetcode——初级算法(树)

Clear_tj的博客 249

LeetCode初级算法-树-1

题目:二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 int maxDepth(...

小太阳啊^_^ 190

LeetCode初级算法-树-3

题目:对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 ==[1,2,2,3,4,4,3]==是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ ...

小太阳啊^_^ 193
上一篇: leetcode 初级算法 链表
下一篇: leetcode 初级算法排序和搜索
randomaccessRAM
博客等级 码龄8年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值