513找树左下角值

news2024/11/18 23:42:39

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

示例 1:

输入: root = [2,1,3]
输出: 1

示例 2:

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
class Solution {
public:
    int findBottomLeftValue(TreeNode* root) {
        //层序迭代
        //记录每一行的第一个元素,从左往右
        //或者从右往左,最后一个遍历的就是ans
        queue<TreeNode*>que;
        int ans = 0;
        if(!root) return 0;
        que.push(root);
        while(!que.empty()){
            int size = que.size();
            while(size--){
                TreeNode* node = que.front();
                que.pop();
                if(node->right) que.push(node->right);
                if(node->left) que.push(node->left);
                ans = node->val;
            }
        }
        return ans;
    }
};
//迭代bfs,从左往右遍历
class Solution {
public:
    int findBottomLeftValue(TreeNode* root) {
        //层序迭代
        //记录每一行的第一个元素,从左往右
        //或者从右往左,最后一个遍历的就是ans
        queue<TreeNode*>que;
        int ans = 0;
        if(!root) return 0;
        que.push(root);
        while(!que.empty()){
            int size = que.size();
            for(int i = 0;i < size;i++){
                TreeNode* node = que.front();
                que.pop();
                if(i == 0) ans = node->val;
                if(node->left) que.push(node->left);
                if(node->right) que.push(node->right);
            }
        }
        return ans;
    }
};
//dfs
class Solution {
public:
    int maxnum = INT32_MIN;
    int res = 0;
    void dfs(TreeNode* root,int depth){
        if(!root) return;
        if(!root->left && !root->left){
            if(depth > maxnum){
                maxnum = depth;
                res = root->val;
            } 
        }
        if(root->left) dfs(root->left,depth+1);//此处隐藏着回溯
        //第二层,d=1。符合到第三层 d=2,不符合,然后max记录一下,val记录
        //回到第二层,在回到第一层,d=0。进入右边第一层同理。
        if(root->right) dfs(root->right,depth+1);
    }
    int findBottomLeftValue(TreeNode* root) {
        //dfs
        int depth = 0;
        if(!root) return 0;
        dfs(root,depth);
        return res;
    }
};
//dfs,第二个版本
class Solution {
public:
    int maxnum = INT32_MIN;
    int res;
    void dfs(TreeNode* root,int depth){
        if(!root->left && !root->right){
            if(depth > maxnum){
                maxnum = depth;
                res = root->val;
            }
            return; 
        }
        if(root->left){
            depth++;
            //在这里dep改变了。而dfs(root->left,dep+1),dep//并没有改变,改变的只是传入下一层的dep变化,并没有改变当前层。
            dfs(root->left,depth);
            depth--; // 回溯。得到多少,为了符合条件就得减掉多少
        }
        if(root->right){
            depth++;
            dfs(root->right,depth);
            depth--;
        }
    }
    int findBottomLeftValue(TreeNode* root) {
        //dfs
        int depth = 0;
        dfs(root,depth);
        return res;
    }
};

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

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

相关文章

RDLC动态设置整个表格是否显示

最近有个新的需求&#xff1a;使用RDLC打印&#xff0c;当数据库中能查出数据时&#xff0c;显示表格。没有数据时&#xff0c;不显示整个表格。 1.首先在RDLC中选中表格的任意一列&#xff0c;右键Tablix属性 2.Tablix属性中选中可见性》选中基于表达式显示或隐藏(E)并点开右…

Word | 简单可操作的快捷公式编号、右对齐和引用方法

1. 问题描述 在理工科论文的写作中&#xff0c;涉及到大量的公式输入&#xff0c;我们希望能够按照章节为公式进行编号&#xff0c;并且实现公式居中&#xff0c;编号右对齐的效果。网上有各种各样的方法来实现&#xff0c;操作繁琐和简单的混在一起&#xff0c;让没有接触过公…

深度强化学习(三)马尔科夫决策过程

文章目录 马尔可夫过程MP马尔科夫链MC状态转移概率矩阵n步转移概率 马尔科夫链 马尔科夫奖励过程MRP奖励机制计算价值概念定义计算价值推导贝尔曼方程贝尔曼方程实际应用 参考文章&#xff1a;https://blog.csdn.net/taka_is_beauty/article/details/88356375 序贯决策问题是针…

【Vue3 源码解析】nextTick

nextTick 是 Vue 3 中用于异步执行回调函数的函数&#xff0c;它会将回调函数延迟到下一个微任务队列中执行。其中&#xff0c;Vue 更新 DOM 是异步的。下面是对 nextTick 函数的详细解释&#xff1a; export function nextTick<T void, R void>(this: T,fn?: (this:…

2023-09-25 LeetCode每日一题(LFU 缓存)

2023-09-25每日一题 一、题目编号 460. LFU 缓存二、题目链接 点击跳转到题目位置 三、题目描述 请你为 最不经常使用&#xff08;LFU&#xff09;缓存算法设计并实现数据结构。 实现 LFUCache 类&#xff1a; LFUCache(int capacity) - 用数据结构的容量 capacity 初始…

全流量安全分析之服务器非法外连

服务器非法外连监控的重要性在于保护服务器的安全性和防止被黑客利用&#xff0c;以下是几个重要的理由&#xff1a; 1、发现恶意活动&#xff1a;通过监控服务器的外连流量&#xff0c;可以及时发现是否有未经授权或可疑的连接尝试。这可能包括入侵攻击、数据泄露、恶意软件传…

基于微信小程序的家校通系统设计与实现(亮点:选题新颖、上传作业、批改作业、成绩统计)

文章目录 前言运行环境说明家长微信小程序端的主要功能有&#xff1a;教师微信小程序端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文…

MySQL 索引底层 B+Tree 原理解析

目录 一、前言二、B-Tree 和 BTree 的区别三、InnoDB 和 MyISAM 存储引擎索引存储区别MyISAMInnoDB 四、InnoDB 联合索引底层数据结构五、MySQL 中三次磁盘IO最大能检索多少数据 一、前言 索引是帮助高效获取数据排好序的数据结构&#xff0c;任何数据库都会使用到索引&#x…

漂流伞顾曼宁(顾曼)的创业之路:相信的力量

顾曼宁&#xff08;顾曼&#xff09;的心情在蚂蚁生态全球CEO大会上充满了感动和鼓舞。这是一个期待已久的盛会&#xff0c;时隔三年&#xff0c;蚂蚁生态全球的首席执行官们再次汇聚一堂。智慧与商业的碰撞下&#xff0c;更藏着感情与坚持的交汇。 蚂蚁集团举办了【相信展】的…

求生之路2服务器搭建插件安装及详细的游戏参数配置教程linux

求生之路2服务器搭建插件安装及详细的游戏参数配置教程linux 大家好我是艾西&#xff0c;在上一篇文章中我用windows系统给搭建演示了一遍怎么搭建自己的L4D2游戏。 那么也有不少小伙伴想知道linux系统的搭建方式以及在这个过程中有什么区别。 那么艾西今天就跟大家分享下用lin…

Nginx可视化管理工具结合cpolar实现远程访问内网服务

前言 Nginx Proxy Manager 是一个开源的反向代理工具&#xff0c;不需要了解太多 Nginx 或 Letsencrypt 的相关知识&#xff0c;即可快速将你的服务暴露到外部环境&#xff0c;并且支持 SSL 配置。基于 Tabler 的美观且安全的管理界面,无需了解 Nginx 即可轻松创建转发域、重定…

生产看板管理系统助力车间生产线提升产量、质量

随着制造业的发展和市场竞争的加剧&#xff0c;企业需要寻求创新的生产管理解决方案来提高生产效率和质量。而车间生产看板管理系统正是满足这一需求的理想选择。这种系统通过实时监控生产线上的各项指标&#xff0c;帮助企业及时发现生产问题&#xff0c;并采取相应的措施。通…

【送书活动】《客户成功的力量》——客户成功体系如何构建?请看这7步

文章目录 前言当下客户成功的痛点客户成功体系构建七步法作者简介赠书活动 前言 在中国企业服务领域的发展过程中&#xff0c;客户成功从在中国萌芽开始&#xff0c;行业内外对其讨论几乎没有停止过。近段时间&#xff0c;关于客户成功的讨论再次被业内广泛关注&#xff0c;原因…

微力私人网盘通过cpolar端口映射,成功实现远程访问本地电脑!

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸&#xff0c;虽然谈不上多么新颖&#xff0c;但是其…

遥遥领先-华为发布会重磅来袭!我的梦,刘德华...

本次发布会一共涉及了三个头号人物&#xff0c;分别是 1.余承东 2.刘德华 3.何刚 对于很多伙伴期待的手机&#xff0c;本次发布会是没有登场的&#xff0c;也有部分伙伴猜测华为是由于部分原因没有登场。 相信后期将会有有更大的策划和科技登场~ “穿过了黑夜&#xff0c;…

【C语言干货】一秒钟记住52个字母的ASCII码

一、ASCII的介绍 ​​ASCII (American Standard Code for Information Interchange)&#xff1a;美国信息交换标准代码是基于拉丁字母的一套电脑编码系统&#xff0c;主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准&#xff0c;并等同于国际标准 ISO/IEC 646。…

ubuntu 14.04更新GCC版本

按最基本的apt-get install gcc-8&#xff0c;不成功&#xff0c;提示如下。 按网上说的&#xff1a;apt-get update ,apt-get upgrade 后都无效果。 apt-cache search get 搜索后&#xff0c;发现资源链接里最新的也只有4.8.4所以不行。 需要更新资源链接&#xff0c;镜像地…

uni-app:实现背景渐变效果

效果 代码 单个渐变色 background-image: linear-gradient(to top right, #f00, #00f); 多个渐变色 background-image: linear-gradient(to bottom, #0073ff 0%, #1d6cff 25%, #1e8bff 50%, #41b3ff 100%); /* 多个渐变色 */ <template><view></view> <…

【Vue.js】使用Element搭建首页导航左侧菜单

目录 Mock.js 是什么 有什么好处 安装mockjs ​编辑 引入mockjs mockjs使用 login-mock Bus事物总线 首页导航栏与左侧菜单搭建 结合总线完成组件通讯 Mock.js 是什么 Mock.js是一个用于生成随机数据的模拟数据生成器。它可以帮助开发人员模拟接口请求&#xff0c;生…

轻松几步操作,视频边框背景虚化无压力

在视频剪辑的世界中&#xff0c;许多人都苦于繁琐的操作和复杂的流程。然而&#xff0c;如果你掌握了正确的工具和方法&#xff0c;许多复杂的任务可以变得简单高效。今天&#xff0c;我将分享一个简单实用的视频剪辑技巧&#xff0c;让你轻松完成批量剪辑视频并虚化边框的快速…