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

多语言建站系统深圳做网站比较好的公司有哪些

多语言建站系统,深圳做网站比较好的公司有哪些,酒店网站建设范文,手机建设网站自适应的好处📖 问题描述 给定一棵二叉树的根节点 root ,返回所有重复的子树。若两棵树结构相同且节点值相同,则认为它们是重复的。对于同类重复子树,只需返回其中任意一棵的根节点。 🌰 示例解析 示例1 输入: 1/ …

📖 问题描述

给定一棵二叉树的根节点 root ,返回所有重复的子树。若两棵树结构相同且节点值相同,则认为它们是重复的。对于同类重复子树,只需返回其中任意一棵的根节点。


🌰 示例解析

示例1

输入

     1/   \2     3/     / \
4     2   4/4

输出[[2,4],[4]]
解释

  • 子树 [2,4] 出现在根节点左子节点和右子节点的左子节点位置

  • 叶子节点 [4] 出现三次


示例2

输入

   2/ \1   1

输出[[1]]
解释:两个叶子节点 [1] 结构相同


🛠️ 解题思路

核心思想:序列化 + 哈希表

  1. 序列化子树
    将每个子树转化为唯一的字符串标识。通过递归遍历,生成形如 根(左子树)(右子树) 的字符串,确保结构唯一性。

  2. 哈希表记录频次
    使用哈希表存储序列化字符串及其对应的子树根节点。当某个序列化字符串第二次出现时,判定为重复子树。

  3. 去重处理
    使用集合存储结果,避免同一类重复子树被多次记录。

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 {HashMap<String, TreeNode> map = new HashMap<>();Set<TreeNode> ans = new HashSet<>();public List<TreeNode> findDuplicateSubtrees(TreeNode root) {dfs(root);return new ArrayList<>(ans);}private String dfs(TreeNode root) {if (root == null) return "";StringBuilder sb = new StringBuilder();sb.append(root.val);sb.append("(");sb.append(dfs(root.left));sb.append(")(");sb.append(dfs(root.right));sb.append(")");String cur = sb.toString();if (map.containsKey(cur)) {ans.add(map.get(cur));} else {map.put(cur, root);}return cur;}
}

 

🔍 复杂度分析

  • 时间复杂度:O(N²),每个节点需序列化其所有子节点。

  • 空间复杂度:O(N²),哈希表存储所有子树序列化字符串。


💡 关键点解析

  1. 序列化设计

    • 使用 根(左子树)(右子树) 格式确保结构唯一性。

    • 空节点用空字符串表示,避免歧义。

  2. 哈希表去重

    • 当同一序列化字符串首次出现时存入哈希表。

    • 后续重复出现时,将首次记录的根节点加入结果集。

  3. 后序遍历优化

    • 递归过程本质是后序遍历(先处理左右子树,再处理当前节点),确保子树序列化完整。


🚀 拓展思考

  • 三元组优化
    可引入唯一ID标识子树,用 (根值, 左ID, 右ID) 代替长字符串,优化时间和空间复杂度至 O(N)。


📝 总结

通过序列化子树为唯一字符串,并结合哈希表记录出现频次,能够高效解决二叉树重复子树的查找问题。该解法思路清晰,代码简洁,适合作为面试快速解题方案。

http://www.dtcms.com/a/465750.html

相关文章:

  • 基于OpenCV的智能疲劳检测系统:原理、实现与创新
  • Google 智能体设计模式:多智能体协作
  • 建设企业网站目的杭州网站建设q479185700惠
  • 自己建网站百度到吗网站建设与维护功能意义
  • Oracle 数据库多实例配置
  • 任天堂3DS模拟器最新版 Azahar Emulator 2123.3 开源游戏模拟器
  • 深圳福田网站建设公司共享ip网站 排名影响
  • 【AI安全】Anthropic推出AI安全工具Petri:通过自主Agent研究大模型行为
  • 云南做网站哪家便宜wordpress单页下载
  • 深度掌握 Git 分支体系:从基础操作到高级策略
  • CTF — ZIP 文件密码恢复
  • AI编程 | 基于即梦AI-Seedream 4.0模型,搭建人脸生成系统
  • 找设计案例的网站网站 设计
  • 医院项目:IBMS 集成系统 + 楼宇自控系统 + 智能照明系统协同解决方案
  • JavaEE初阶5.0
  • 一个企业做网站推广的优势手机网站怎么制作内容
  • 有代码怎么做网站做网站用源码
  • linux 环境下mysql 数据库自动备份和清库 通过crontab 创建定时任务实现mysql数据库备份
  • 每天一个设计模式——开闭原则
  • C++协程版本网络框架:快速构建一个高效极致简洁的HTTP服务器
  • 福州台江区网站建设网页怎么做链接
  • 单片机图形化编程:课程目录介绍 总纲
  • Redis-集合(Set)类型
  • 软件定义的理想硬件平台:Qotom Q30900SE/UE系列在AIO服务器与边缘网关中的实践
  • MS7126 24位立体音频DAC
  • 引领网站手机网站建设的整体流程
  • 计算机网络【第四章-网络层】
  • 响应式网站建设特征wordpress网站不显示系列
  • Fiddler抓包工具使用教程,代理设置与调试方法实战解析(含配置技巧)
  • linux系统中如何在root用户中将某个文件夹目录的权限赋值给其它用户(主要说的是 方法 1)