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

男女做微电影网站汽车网站建设

男女做微电影网站,汽车网站建设,东莞购物网站建设,wordpress提示窗250.统计同值子树 使用dfs深度搜索,同值子树,要满足三个条件: 对于当前节点node,他的左子树血脉纯净(为同值子树),右子树血脉纯净(为同值子树),node的值等于…

250.统计同值子树

使用dfs深度搜索,同值子树,要满足三个条件:

对于当前节点node,他的左子树血脉纯净(为同值子树),右子树血脉纯净(为同值子树),node的值等于左右子树节点的值。

全是if判断,推理!!!

class Solution:def countUnivalSubtrees(self, root: Optional[TreeNode]) -> int:n, b = self.dfs(root)return ndef dfs(self, root):if not root: return 0, Truen = 0b = Truen1, b1 = self.dfs(root.left)n2, b2 = self.dfs(root.right)n = n1 + n2if not b1 or not b2:b = Falseif root.left and root.left.val != root.val:b = Falseif root.right and root.right.val != root.val:b = Falseif b: n += 1return n, b

1120.子树的最大平均值

使用dfs, 返回以root为根的所以节点的总和,节点数量。

没有任何技巧,全是感情!!!

class Solution:def __init__(self):self.m = 0def maximumAverageSubtree(self, root: Optional[TreeNode]) -> float:self.dfs(root)return self.mdef dfs(self, root):# 返回以root为根的所以节点的总和,节点数量if not root: return 0, 0s1, c1 = self.dfs(root.left)s2, c2 = self.dfs(root.right)s = s1 + s2 + root.valc = c1 + c2 + 1self.m = max(self.m, s/c)return s, c

545.二叉树的边界

 可以把题目分成三个问题,使用三个dfs解决,可以发现左边界和右边界很相似,dfs传入一个idx判断是先从左走还是先从右走,另外题目说:根节点 不是 叶节点。但是数据中存在只有一个节点的情况需要注意。

class Solution:def __init__(self):self.leaf = []def boundaryOfBinaryTree(self, root: Optional[TreeNode]) -> List[int]:if not root.left and not root.right: return [root.val]ans = []if root.left:l = self.find_ls(root, 0)ans += lelse:ans = [root.val]self.find_leaf(root)ans += self.leafif root.right:r = self.find_ls(root, 1)ans += r[::-1]ans.pop()return ansdef find_ls(self, root, idx):ans = [root.val]if idx == 1:root.left, root.right = root.right, root.leftif root.left:ans += self.find_ls(root.left, idx)elif root.right:ans += self.find_ls(root.right, idx)else:return []return ansdef find_leaf(self, root):if root.left:self.find_leaf(root.left)if root.right:self.find_leaf(root.right)if not root.left and not root.right:self.leaf.append(root.val)

366.寻找二叉树的叶子节点

任然使用dfs深度搜索,记录每一层的位置,然后在ans相应位置中插入

class Solution:def __init__(self):self.length = 0self.ans = []def findLeaves(self, root: Optional[TreeNode]) -> List[List[int]]:self.dfs(root)return self.ansdef dfs(self, root):if not root: return 0n1 = self.dfs(root.left)n2 = self.dfs(root.right)n = max(n1, n2)if self.length - 1 < n:self.length += 1self.ans.append([])self.ans[n].append(root.val)return n + 1

还能补充知识吗!!!我的大脑🧠

http://www.dinnco.com/news/37612.html

相关文章:

  • 装饰公司接单技巧百度系优化
  • 建设银行管方网站seo优化sem推广
  • 西安哪家网站建设好seo零基础入门教程
  • 南京网站建设多少钱广州网站优化价格
  • tp框架做响应式网站网站制作教程
  • 整站优化包年爱用建站
  • 容桂网站建设韶关网站seo
  • 网站源码怎样弄成网站外贸网站推广怎么做
  • 化工销售怎么做网站怎么做网站教程视频
  • 用腾讯云做购物网站视频优化网站的目的
  • 红酒网站建设方案范本软文广告代理平台
  • 珠海网站制作百度在线下载
  • 网站口碑推广安徽网站关键词优化
  • 做招标网站 如何南昌百度推广联系方式
  • 做直播网站一定要idc吗南京疫情最新情况
  • 包装设计图南京seo按天计费
  • 做正规小说网站有哪些上海空气中检测出病毒
  • 石岩网站建设培训机构优化
  • 设备租赁网站建设自动优化app
  • wordpress query vars南京怎样优化关键词排名
  • 网络营销成功的案例有哪些北京网络seo
  • wordpress 删除文章灰色seo关键词排名
  • 高埗镇网站建设郑州百度推广托管
  • 企业网站代码百度推广广告收费标准
  • 微信微网站开发价格seo推广沧州公司电话
  • 珠海网站开发企业网络营销策划书
  • 做网站前端用什么软件今日国际新闻大事件
  • 校园微网站建设方案ppt免费个人网站源码
  • 泰安网站制作排行重庆seo网站排名
  • 石河子网站制作微平台推广