给定一个二叉树,在树的最后一行找到最左边的值。

示例 1:

示例 2:

解题思路:使用广度优先遍历,因为题目要求寻找的是最底层的最左边的节点。因此我们维护一个变量——节点所在的树的高度,设根节点的高度为0,每往下一层则节点的高度加一。

使用队列,队列中的元素是[节点的索引,节点的高度],这样在遍历队列的时候,当遍历到的节点的所在的高度比前面节点的高度高时,则更新题目所需要求的最底层最左边的节点的值。

具体代码如下:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def findBottomLeftValue(self, root: TreeNode) -> int:if not root:return Nonequeue = collections.deque()    # 创建一个队列queue.append([root,0])  # 将[根节点,根节点的高度]放进队列中d = -1  # 当前遍历到的节点的高度nums = 0  # 用于存储最底层最左边的节点的值while queue:    # 遍历队列roots,index = queue.popleft()    # 获得当前队列的节点的索引和节点所在的层数if index > d:    # 如果当前节点的层数大于之前的节点的层数d = index    # 对最高层数进行更新nums = roots.val    # 同时更新最底层最左边的值if roots.left:    # 对下一层子树放进队列中queue.append([roots.left,index+1])if roots.right:queue.append([roots.right,index+1])return nums

leetcode —— 513. 找树左下角的值相关推荐

  1. Java实现 LeetCode 513 找树左下角的值

    513. 找树左下角的值 给定一个二叉树,在树的最后一行找到最左边的值. 示例 1: 输入: 2/ \1 3 输出: 1 示例 2: 输入: 1/ \2 3/ / \ 4 5 6/7 输出: 7 注意 ...

  2. LeetCode 513. 找树左下角的值 思考分析

    题目 给定一个二叉树,在树的最后一行找到最左边的值. 递归解 左下角要满足两个条件: 1.深度最大的叶子结点 2.最左结点:使用前序遍历,优先左边搜索. 1.确定递归函数的参数和返回值 参数:树的根结 ...

  3. LeetCode 513. 找树左下角的值(按层遍历 queue)

    1. 题目 给定一个二叉树,在树的最后一行找到最左边的值. 2. 解题 利用队列按层次遍历 顺序,根右左,要求最左边的一个,所以根右左,最后一个队列元素就是答案 class Solution {pub ...

  4. LeetCode 513. 找树左下角的值(递归)

    题目描述 给定一个二叉树,在树的最后一行找到最左边的值. 思路 详见链接 代码 class Solution:def findBottomLeftValue(self,root:TreeNode) - ...

  5. 2022-5-5 Leetcode 513.找树左下角的值

    层序遍历 -- 每层的第一个节点即可. /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode * ...

  6. Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树

    513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...

  7. 力扣513. 找树左下角的值(JavaScript)

    //层序遍历 var findBottomLeftValue = function(root) { let resultlet q=[root]while(q.length){//取出一个节点,需要加 ...

  8. 代码随想录第18天|找树左下角的值,路径总和,从中序和后序遍历序列构造二叉树

    LeetCode513.找树左下角的值 题目链接:513. 找树左下角的值 - 力扣(LeetCode) 思路: 迭代法(只需要记录最后一行第一个节点的数值就可以了.): /*** Definitio ...

  9. 找树左下角的值+路径总和+从前序和中序遍历序列构造二叉树(day18*)

    这篇可以主要关注一下如何确定递归时是否需要返回值. LC513. 找树左下角的值 给定一个二叉树的根节点,请找出该二叉树的 最底层最左边 节点的值. 思路1 层序遍历 class Solution:d ...

最新文章

  1. sqlserver2008r2升级到2012的问题
  2. 编译Android源码前的一个步骤
  3. POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
  4. 马云卸任CEO演讲全文:明天起生活将是我的工作
  5. Tkinter图片按钮
  6. linux 删除含有关键词的文件_linux下查找包含关键字的文件
  7. Atlassian JIRA 插件开发之三 创建
  8. python开源聊天框架_转载:15个最受欢迎的Python开源框架-阿里云开发者社区
  9. java poi设置单元格格式为数值_java中导出excel设置单元格的样式为数字格式怎样设置?...
  10. yarn启动vue项目
  11. 批判性思维-思维遮蔽性
  12. 微博是一种倒退,而非革命
  13. 双核旗舰处理器:德仪Omap4430、高通MSM8260、猎户S5PV310、Tegra2横向优点缺点比较...
  14. Unicode字符编码标准
  15. C++复原2048小游戏(纯文字)
  16. 规则引擎Drools示例:个人所得税计算器、信用卡申请、保险产品准入规则
  17. 递归函数c语言求爬格子,指标的含义,真或假.doc
  18. Enterprise Architect入门:如何利用BABOK指南进行建模
  19. windows的注册表有什么用?
  20. RISC-V学习基础(五)

热门文章

  1. 关于cacti图形显示不正常的解决办法
  2. 福昕高级PDF编辑器
  3. TypeScript 安装与使用
  4. Nginx的TCP运行时健康检查
  5. Spring Restful Web服务示例 - 使用JSON/Jackson和客户端程序
  6. IntelliJ IDEA Community社区版集成Tomcat or Jetty教程
  7. Fedora的systemctl命令详解 Fedora配置IP地址/DNS/Networking
  8. 厦门大学c语言模拟考试题,厦门大学《C语言》模拟试卷(10级).doc
  9. java拷贝文件夹和删除文件夹
  10. 漫画 |《程序员十二时辰》,内容过于真实 ...