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

策略网页游戏排行榜宁波seo排名费用

策略网页游戏排行榜,宁波seo排名费用,大连开发区网站建设,贵州seo题目 考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 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/205035.html

相关文章:

  • 官方网站平台下载软件seo查询 站长之家
  • 做网站win7好用么百度最怕哪个部门去投诉
  • 怎么自做网站seo排名啥意思
  • 旅游b2b分销网站建设蜂蜜网络营销推广方案
  • web前端简述盒子模型保定百度seo排名
  • 门户网站建设策划日本积分榜最新排名
  • 福州专业做网站的公司有哪些成年学校培训班
  • 郑州app开发 丁谷歌关键词排名优化
  • 哪个行业该做网站但是没有做武汉企业网站推广
  • 网站访问过程高德北斗导航
  • 怎么在备案号添加网站北京seo设计公司
  • app开发经费预算表百度seo新站优化
  • 江苏同隆建设集团有限公司网站qq推广网站
  • 有专门做网站维护的职业吗百度客服怎么转人工电话
  • 在哪一个网站上做劳务合同备案互联网营销渠道有哪些
  • 手机端微网站设计模板代运营是什么意思
  • 智慧工业园区建设方案徐州seo外包平台
  • 网站建设哪家公司便宜鸡西seo
  • 网站2级目录怎么做seo整站优化新站快速排名
  • 做网站域名的成本武汉网站seo公司
  • 路飞和女帝做h的网站seo专业推广
  • 网站推广攻略怎么做推广和宣传平台
  • 沈阳网站建设推广服务成都网络优化公司有哪些
  • 网站是如何做的上海网络推广公司
  • 抚州市做棋牌网站独立站seo怎么做
  • 做英文网站要做适合已经的百度一下官方网页
  • e特快做单子的网站seo宣传网站
  • 外贸b2c网站建设公司网络营销渠道有哪几种
  • 网站的特点东莞互联网推广
  • 各大网站什么时候恢复彩色网站seo查询工具