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

免费建站免费网站申请全网引流推广 价格

免费建站免费网站申请,全网引流推广 价格,专做洗衣柜的网站,做算命类网站违法吗?题目 考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true&…

题目

考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。
如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。
如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。

一、代码实现

func leafSimilar(root1 *TreeNode, root2 *TreeNode) bool {// 递归法遍历叶子节点(网页3、5)var getLeaves func(root *TreeNode) []intgetLeaves = func(root *TreeNode) []int {if root == nil {return []int{}}if root.Left == nil && root.Right == nil {return []int{root.Val}}// 左子树优先遍历保证顺序(网页2、3)return append(getLeaves(root.Left), getLeaves(root.Right)...)}leaves1 := getLeaves(root1)leaves2 := getLeaves(root2)return reflect.DeepEqual(leaves1, leaves2)
}

二、算法分析

1. 核心思路
  • 深度优先遍历:递归遍历二叉树,优先访问左子树,确保叶子节点按从左到右顺序收集
  • 序列比对:比较两棵树的叶子值序列是否完全一致
2. 关键步骤
  1. 递归终止条件:空节点返回空数组,叶子节点返回自身值
  2. 递归分解:将左右子树的叶子序列合并
  3. 最终比对:使用reflect.DeepEqual判断切片相等性
3. 复杂度
指标说明
时间复杂度O(n)每个节点访问一次,n为节点总数
空间复杂度O(h)h为树的高度(递归栈空间)

三、图解示例

以二叉树root1 = [3,5,1,6,2,9,8,null,null,7,4]root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8]为例:
在这里插入图片描述

四、边界条件与扩展

1. 特殊场景验证
  • 空树对比root1=nil, root2=nil → true
  • 结构不同但叶序相同:如root1=[1,2,3], root2=[1,3,2] → false
  • 单节点树root1=[5], root2=[5] → true
2. 多语言实现
# Python实现(网页2、3)
class Solution:def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:def dfs(node):if not node: return []if not node.left and not node.right: return [node.val]return dfs(node.left) + dfs(node.right)return dfs(root1) == dfs(root2)
// Java实现(网页4)
class Solution {public boolean leafSimilar(TreeNode root1, TreeNode root2) {List<Integer> list1 = new ArrayList<>();List<Integer> list2 = new ArrayList<>();dfs(root1, list1);dfs(root2, list2);return list1.equals(list2);}private void dfs(TreeNode node, List<Integer> list) {if (node == null) return;if (node.left == null && node.right == null) list.add(node.val);dfs(node.left, list);dfs(node.right, list);}
}

五、总结与扩展

1. 核心创新点
  • 递归分治策略:将复杂问题分解为子树处理
  • 顺序保障机制:左子树优先遍历确保叶序一致性
  • 内存优化设计:Go语言切片操作避免全局变量
2. 扩展应用
  • 并行遍历优化:使用协程同时遍历两棵树,实时比对叶子值
  • 非递归实现:用栈模拟递归过程,避免栈溢出风险
  • 流式处理:边遍历边比较,提前终止不匹配的情况
3. 工程优化方向
  • 内存预分配:根据树高度预切片容量(Go语言)
  • 迭代器模式:实现叶子节点迭代器支持大规模数据处理
  • 并发安全:添加互斥锁支持多线程环境下的遍历
http://www.dtcms.com/wzjs/181164.html

相关文章:

  • 上海市网站公安备案电话全国疫情高峰感染高峰进度
  • 网站建设移动端百度识图查图片
  • 网站转移权重网站降权查询工具
  • 做钓鱼网站教程视频教程长沙百度搜索排名优化
  • 网站商城怎么做的今日军事新闻最新消息新闻
  • 网站建设竞价托管服务牛排seo
  • 03340 网站建设与管理新发布的新闻
  • wordpress博客排行榜优化防疫措施
  • wordpress百度搜索无缩略图杭州最专业的seo公司
  • 做动态图网站有哪些整站优化seo
  • 在外国租服务器做那种网站螺蛳粉营销策划方案
  • 新手学网站建设看什么书好竞价培训课程
  • 做网站需要租服务器么网站关键词优化方案
  • 一开始用php做网站新乡seo网络推广费用
  • 摄影网站的建设的论文seo是什么服务器
  • 网站建设经营范围什么是网站推广
  • 手机网站导航按钮互联网营销推广方案
  • 网络公司建设网站网站seo排名培训
  • 做外贸网站市场关键词推广价格
  • 网站建设项目进度表媒体平台
  • 微信公众商城网站开发最近国家新闻
  • 怎么用服务器ip做网站app宣传推广方案
  • 网站上切换语言是怎么做的打开百度app
  • 网站怎么做端口映射外贸公司一般怎么找客户
  • 网站开发常用组合b2b平台营销
  • 外贸企业网站管理系统百度关键词优化软件
  • 公司网站做排名用什么搜索好点北京网络营销公司哪家好
  • 安全生产门户网站建设百度seo外链推广教程
  • 青岛百度网站建设百度推广登录入口官网
  • 深圳做网站建设月薪多少关键词挖掘站长