LeetCode 742. 二叉树最近的叶节点(建立父节点信息+BFS)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给定一个 每个结点的值互不相同 的二叉树,和一个目标值 k,找出树中与目标值 k 最近的叶结点。

这里,与叶结点 最近 表示在二叉树中到达该叶节点需要行进的边数与到达其它叶结点相比最少。
而且,当一个结点没有孩子结点时称其为叶结点。

在下面的例子中,输入的树以逐行的平铺形式表示。
实际上的有根树 root 将以TreeNode对象的形式给出。

示例 1:
输入:
root = [1, 3, 2], k = 1
二叉树图示:1/ \3   2输出: 2 (3)
解释: 23 都是距离目标 1 最近的叶节点。示例 2:
输入:
root = [1], k = 1
输出:1
解释: 最近的叶节点是根结点自身。示例 3:
输入:
root = [1,2,3,4,null,null,null,5,null,6], k = 2
二叉树图示:1/ \2   3/4/5/6输出:3
解释: 值为 3(而不是值为 6)的叶节点是距离结点 2 的最近结点。注:
root 表示的二叉树最少有 1 个结点且最多有 1000 个结点。
每个结点都有一个唯一的 node.val ,范围为 [1, 1000]。
给定的二叉树中有某个结点使得 node.val == k。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/closest-leaf-in-a-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dfs 建立父节点信息,找到 k 节点,加入队列
  • BFS,向子节点和父节点进行BFS搜索,第一个找到的叶子节点为答案
class Solution {unordered_map<TreeNode*,TreeNode*> father;queue<TreeNode*> q;unordered_set<TreeNode*> visited;
public:int findClosestLeaf(TreeNode* root, int k) {father[root] = NULL;dfs(root, k);int size;TreeNode* cur;while(!q.empty()){size = q.size();while(size--){cur = q.front();q.pop();if(!cur->left && !cur->right)return cur->val;if(cur->left && !visited.count(cur->left)){q.push(cur->left);visited.insert(cur->left);}if(cur->right && !visited.count(cur->right)){q.push(cur->right);visited.insert(cur->right);}if(father[cur] && !visited.count(father[cur])){q.push(father[cur]);visited.insert(father[cur]);}}}return -1;}void dfs(TreeNode* root, int k) {if(!root) return;if(root->val == k){q.push(root);visited.insert(root);}if(root->left)father[root->left] = root;if(root->right)father[root->right] = root;dfs(root->left,k);dfs(root->right,k);}
};

28 ms 22.9 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

SharePoint 大局观(4)——从开发人员角度

内容摘要 SharePoint是微软提供的一个企业级别的协作平台&#xff0c;目前最新的版本是2010&#xff0c;它的功能相当多&#xff0c;而且也相当灵活。为了帮助大家更好地&#xff0c;从相对较高的层面了解SharePoint 2010的体系结构&#xff0c;我这里分七讲来分别介绍。 本节讲…

LeetCode 490. 迷宫(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 由空地和墙组成的迷宫中有一个球。 球可以向上下左右四个方向滚动&#xff0c;但在遇到墙壁前不会停止滚动。 当球停下时&#xff0c;可以选择下一个方向。 给定球的起始位置&#xff0c;目的地和迷宫&#xff0c;判断球能否在目…

android studio moudel,Android Studio 添加其他目录下的module

Android Studio 添加其他目录下的moduleadmin • 2020 年 11 月 07 日[title]需要操作的原因[/title]在我们写程序的时候&#xff0c;经常会因为重复性的代码而耽误工夫&#xff0c;所以会编写一些常用的工具类和模块进行调用。在网上搜索到的都是同一个工程下如何配置模块&…

Photoshop Blendmodi in GLSL

转载自&#xff1a;http://renderingpipeline.com/2012/06/photoshop-blendmodi-glsl/ I once wrote a texturing tool in which you could paint on a 3D model on multiple layers. These layers were composing the final texture just as you know it from photoshop, comp…

LeetCode 505. 迷宫 II(BFS / Dijkstra 最短路径)

文章目录1. 题目2. 解题2.1 BFS2.2 Dijkstra 最短路径1. 题目 由空地和墙组成的迷宫中有一个球。 球可以向上下左右四个方向滚动&#xff0c;但在遇到墙壁前不会停止滚动。 当球停下时&#xff0c;可以选择下一个方向。 给定球的起始位置&#xff0c;目的地和迷宫&#xff0c…

数据冗余的理解和相关概念

2012年6月22日有同学去完爱森哲面试回来说&#xff0c;有一问题是问如何消除数据冗余的&#xff0c;我一时也忘了数据冗余的相关概念&#xff0c;于是再复习了一遍&#xff1a; 数据冗余 关系数据库的数据冗余形成的原因&#xff1a;表的重复、属性的重复、元组的重复、属性值的…

红米note3android版本,小米-红米note3-LOS-安卓9.0.0-稳定版Stable3.0-来去电归属-农历等-本地化增强适配...

制作者&#xff1a;MOS-Developer基于版本&#xff1a;LineageOS Android最新安卓9.0.0代码适合机型&#xff1a;小米红米note3高配/标配/低配/kenzo注意事项&#xff1a;为了能一直更新和维护&#xff0c;不付费不收费&#xff0c;请把预装的4个软件使用3-5天后再卸载&#xf…

LeetCode 305. 岛屿数量 II(并查集)

文章目录1. 题目2. 解题2.1 超时解2.1 改进计算方法1. 题目 假设你设计一个游戏&#xff0c;用一个 m 行 n 列的 2D 网格来存储你的游戏地图。 起始的时候&#xff0c;每个格子的地形都被默认标记为「水」。 我们可以通过使用 addLand 进行操作&#xff0c;将位置 (row, col)…

cygwin下的gcc-4.7.1编译心得

步骤&#xff1a; 1、先编译gmp mpfr mpc这几个库&#xff0c;注意configure时--prefix/usr/local/ 2、中间碰到过can not compute suffix的错误&#xff0c;在命令 export LD_LIBRARY_PATH/usr/local/:${LD_LIBRARY_PATH} export LD_RUN_PATH/usr/local/:${LD_RUN_PATH} 也不行…

鸿蒙系统怎么换windows,求助~鸿蒙系统windows环境搭建(hpm-cli安装失败)!

系统win10&#xff0c;执行命令“npm install -g ohos/hpm-cli”&#xff0c;报错如下&#xff1a;npm ERR! code EEXISTnpm ERR! path C:\Users\jay\AppData\Roaming\npm\node_modules\ohos\hpm-cli\bin\hpmnpm ERR! dest C:\Users\jay\AppData\Roaming\npm\hpmnpm ERR! EEXIS…

LeetCode 265. 粉刷房子 II(DP)

文章目录1. 题目2. 解题1. 题目 假如有一排房子&#xff0c;共 n 个&#xff0c;每个房子可以被粉刷成 k 种颜色中的一种&#xff0c;你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 当然&#xff0c;因为市场上不同颜色油漆的价格不同&#xff0c;所以房子粉刷成…

string::size_type

重读c primier, 从这个文章开始做个记录&#xff0c;方便以后自己查阅。 1、string::size_type,string的size&#xff08;&#xff09;方法返回的类型&#xff0c;可以保证string的任意长度。作为配套类型使得string类型的操作与机器无关。 2、操作时需加上作用于操作符&#x…

鸿蒙系统笔记本价格,鸿蒙系统手机华为P50将明年3月发售,华为P40价格骤降至冰点...

原标题&#xff1a;鸿蒙系统手机华为P50将明年3月发售&#xff0c;华为P40价格骤降至冰点鸿蒙系统手机华为P50将明年3月发售&#xff0c;华为P40价格骤降至冰点&#xff01;每一代P系列产品都基于华为研发和业界合作伙伴的最前沿的能力&#xff0c;实现全新的突破&#xff0c;明…

LeetCode 272. 最接近的二叉搜索树值 II(栈+优先队列)

文章目录1. 题目2. 解题1. 题目 给定一个不为空的二叉搜索树和一个目标值 target&#xff0c;请在该二叉搜索树中找到最接近目标值 target 的 k 个值。 注意&#xff1a; 给定的目标值 target 是一个浮点数 你可以默认 k 值永远是有效的&#xff0c;即 k ≤ 总结点数 题目保证…

android p dp5,谷歌释出Android P第5个开发者预览版更新!

原标题&#xff1a;谷歌释出Android P第5个开发者预览版更新&#xff01;【PConline资讯】今天凌晨&#xff0c;谷歌正式推出了AndroidP的第五个开发者预览版(DP5)&#xff0c;这标志着AndroidP终于准备好在2018年第三季度来面对广大的Android用户了。具体来说&#xff0c;按照…

Sax解析Xml

程序1. package WildCat.Xml.Sax; import java.io.File; import java.util.Stack; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHa…

LeetCode 750. 角矩形的数量(DP)

文章目录1. 题目2. 解题1. 题目 给定一个只包含 0 和 1 的网格&#xff0c;找出其中角矩形的数量。 一个「角矩形」是由四个不同的在网格上的 1 形成的轴对称的矩形。 注意只有4角的位置才需要为 1。并且&#xff0c;4 个 1 需要是不同的。 示例 1&#xff1a; 输入&#xf…

android数据库给单选赋值,如何使用android studio将单选按钮的值保存到mysql数据库?...

我想创建一个投票应用程序&#xff0c;其中有不同的职位&#xff0c;其中有两个职位每个都有两个联系人。我希望当我选择一个人记录到数据库。 [职位的disgn与它的参赛者部] 下面是XML代码的一部分&#xff1a;如何使用android studio将单选按钮的值保存到mysql数据库&#xff…

LeetCode 267. 回文排列 II(回溯)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 s &#xff0c;返回其通过重新排列组合后所有可能的回文字符串&#xff0c;并去除重复的组合。 如不能形成任何回文排列时&#xff0c;则返回一个空列表。 示例 1&#xff1a; 输入: "aabb" 输出: ["abba"…

寒江独钓1

驱动模型区分&#xff1a;WDM 必须满足n种被要求的特性&#xff08;如电源管理&#xff0c;即插即用&#xff09;&#xff1b;如果没有这些功能&#xff0c;则统一称为NT式驱动&#xff1b;如果调用了WDF的内核API&#xff0c;则称为WDF驱动。 本书关注于通用的内核程序开发&am…