当前位置: 首页 > news >正文

513. 找树左下角的值

文章目录

    • 题目描述
    • 做题记录
    • 代码实现
    • 题目链接

题目描述

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

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

示例 1:

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

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

提示:

二叉树的节点个数的范围是 [1,104]
-231 <= Node.val <= 231 - 1


做题记录

  • 今日二刷

  • 找出最左结点的值

  • 注意:最左:最底层 + 最左

  • 迭代法

    层序遍历

    队列最后出去的那一个元素就是要找的元素

    注意:往队列里面放元素的时候需要先放 右节点 然后才是放 左节点

  • 递归法

    求出树的高度

    判断是从左树还是右树找目标

    递归条件:

          if(root.left==null&&root.right==null){
            return root.val;
          }
    

代码实现

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int findBottomLeftValue(TreeNode root) {
      Deque<TreeNode> queue=new ArrayDeque<>();
      queue.offer(root);
      int res=0;
      while(!queue.isEmpty()){
        TreeNode top=queue.poll();
        res=top.val;
        if(top.right!=null)queue.offer(top.right);
        if(top.left!=null)queue.offer(top.left);
      }
      return res;

    }
}


//递归
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int findBottomLeftValue(TreeNode root) {
      if(root.left==null&&root.right==null){
        return root.val;
      }
      int leftH=height(root.left);
      int rightH=height(root.right);
      if(leftH>=rightH){
        return findBottomLeftValue(root.left);
      }else{
        return findBottomLeftValue(root.right);
      }
    }
    public int height(TreeNode root){
      if(root==null){
        return 0;
      }
      int left=height(root.left);
      int right=height(root.right);
      return Math.max(left,right)+1;
    }
    
}

题目链接

513. 找树左下角的值

相关文章:

  • python csv模块读取/写入csv文件
  • Nacos学习笔记 (5)Nacos整合SpringBoot流程
  • 在服务器安装jupyter并在本地访问
  • MySQL索引-索引的优势和劣势
  • 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作
  • 关于居住办公人口的统计技术解决方案
  • 四、网络层(三)IPv4
  • Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令
  • 职场经验:游戏测试的主要工作及主要流程
  • 创建react项目
  • 信息安全产品认证
  • 2021地理设计组一等奖:面向游客的旅游路线优化设计——以丹霞山景区为例
  • 企业数字化转型的整体如何规划?
  • 开放下载丨2023年二十万字技术年货新鲜送达
  • 使用 Flet Python 框架构建 URL 缩短器 Flutter 应用程序
  • 2023世界杯新媒体传播热点盘点 中国元素之中国馆、富而喜悦!
  • 如何让 git 使用我选择的编辑器来编辑提交消息?
  • 使用msf生成木马反弹shell(windows系统)
  • 2022巨量引擎城市峰会:发布重磅白皮书 提升城市繁荣力
  • Vue3组件化开发(⼀)(二) | webpack