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

LeetCode 解题思路 23(Hot 100)

在这里插入图片描述

解题思路:

  1. BFS 初始化: 需要一个返回结果的列表 List 和一个队列 Queue,将根节点加入队列。
  2. 循环处理每一层:
  • 记录当前层的节点数。
  • 依次处理当前层的所有节点,将子节点加入队列。
  • 处理完当前层后,将最后一个节点的值加入结果列表。

Java代码:

class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        if (root == null) return result;

        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        while (!queue.isEmpty()) {
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                TreeNode node = queue.poll();
                if (i == size - 1) result.add(node.val);
                if (node.left != null) queue.offer(node.left);
                if (node.right != null) queue.offer(node.right);
            }
        }

        return result;
    }
}

复杂度分析:

  • 时间复杂度: O(n),需遍历所有节点一次。
  • 空间复杂度: O(n) 或 O(logn)。

在这里插入图片描述

解题思路:

  1. 反前序遍历: 第一次访问的是最后一个节点,将其右子树设置为 last,左子树设置为 null。
  2. 递归调整: 递归调整剩余节点,将其右子树设置为 last,左子树设置为 null。思路类似递归翻转链表。

Java代码:

class Solution {
    TreeNode last;
    public void flatten(TreeNode root) {
        if (root == null) return;

        flatten(root.right);
        flatten(root.left);
        root.left = null;
        root.right = last;
        last= root;
    }
}

复杂度分析:

  • 时间复杂度: O(n),每个节点访问一次。
  • 空间复杂度: O(1)。
http://www.dtcms.com/a/81237.html

相关文章:

  • 炫酷的3D按钮效果实现 - CSS3高级特性应用
  • 线性代数(期末周救济)--笔记1
  • 中文文献去哪里查找,个人下载知网、万方、维普文献途径
  • HFSS 使用指南 —— 新手项目完整实现步骤
  • C/C++错误信息
  • 【第19节】windows sdk编程:文件I/O
  • 前缀和算法的应用
  • 使用crontab设置程序自启动
  • ubuntu 解挂载时提示 “umount: /home/xx/Applications/yy: target is busy.”
  • [笔记] 数据结构-第九章-检索
  • eBPF调研-附上参考资源
  • 人工智能之数学基础:齐次方程组和非齐次方程组的区别
  • java+selenium(资源全备,打开已使用浏览器信息,保留用户信息)
  • Day21:二叉树的深度
  • 知行之桥EDI系统应用程序目录切换指南(Windows与跨平台版)
  • Java-SpringBootWeb入门、Spring官方脚手架连接不上解决方法
  • 使用Three.js渲染器创建炫酷3D场景
  • 74HC04(反相器)和74HC14(反相器、施密特触发器)的区别
  • 【项目】幸运抽奖 测试报告
  • 怎么查看linux是Ubuntu还是centos
  • Compose 实践与探索十五 —— 自定义触摸
  • Python 应用部署云端实战指南 —— AWS、Google Cloud 与 Azure 全解析
  • 学习threejs,使用TextGeometry文本几何体
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part11
  • Springboot各版本与Java JDK的对应关系及JDK商用版本
  • 【JavaWeb学习Day27】
  • 洛谷 P2157 [SDOI2009] 学校食堂
  • C++从入门到实战(六)类和对象(第二部分)C++成员对象及其实例化,对象大小与this详解
  • pytorch 网络结构可视化Netron安装使用方法(已解决)
  • 人力资源管理基于SpringBootSSM框架