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

算法刷题Day16: BM41 输出二叉树的右视图

题目链接

描述
在这里插入图片描述

思路:

递归构造二叉树在Day15有讲到。复习一下,就是使用递归构建左右子树。将中序和前序一分为二。
接下来是找出每一层的最右边的节点,可以利用队列+层次遍历。
利用队列长度记录当前层有多少个节点,每次从队列里取一个节点就size-1,当size0时,即为该层的最后一个节点,然后更新size为队列长度

代码:

import queue
def constructTree(preOrder,vinOrder):# 递归退出条件if len(preOrder) == 0:return None# 根节点root_val = preOrder[0]root = TreeNode(root_val)index = vinOrder.index(root_val)leftnode = constructTree(preOrder[1:index+1], vinOrder[:index])rightnode = constructTree(preOrder[index+1:],vinOrder[index+1:])root.left = leftnoderoot.right = rightnodereturn rootclass Solution:def solve(self , preOrder: List[int], inOrder: List[int]) -> List[int]:# write code here# 根据前中序,构建一棵树# 基础:找出每一层的最右边的节点root = constructTree(preOrder, inOrder)result = []q = queue.Queue()q.put(root)# 记录每一层的sizesize = 1while not q.empty():node = q.get()if node.left:q.put(node.left)if node.right:q.put(node.right)size -= 1if size == 0:# 最后一个节点size = q.qsize()result.append(node.val)return result

还完债了,回家就刀片嗓有点难受啊,以后再也不吃啫啫煲了,好上火。

http://www.lryc.cn/news/502924.html

相关文章:

  • 登录授权的实现:json web token + redis + springboot
  • yolov,coco,voc标记的睡岗检测数据集,可识别在桌子上趴着睡,埋头睡觉,座椅上靠着睡,平躺着睡等多种睡姿的检测,6549张图片
  • 数据库表的CRUD
  • Proxy与Reflect
  • 【安卓开发】【Android Studio】启动时报错“Unable to access Android SDK add-on list”
  • 【C语言篇】C 语言总复习(下):点亮编程思维,穿越代码的浩瀚星河
  • AI技术架构:从基础设施到应用
  • centos7的yum镜像源设置
  • Qt6开发自签名证书的https代理服务器
  • HarmonyOS:多线程并发-Worker
  • 小程序IOS安全区域优化:safe-area-inset-bottom
  • C++ 中多态性在实际项目中的应用场景
  • prettier配置
  • 【基于OpenEuler国产操作系统大数据实验环境搭建】
  • 期末软件经济学
  • 滑动窗口算法专题
  • 基于Java的世界时区自动计算及时间生成方法
  • Excel + Notepad + CMD 命令行批量修改文件名
  • OpenGL 几何着色器高级应用
  • 【Unity基础】Unity 2D实现拖拽功能的10种方法
  • duxapp中兼容多端的 BoxShadow 阴影组件
  • 服务器---centos上安装docker并使用docker配置jenkins
  • Linux系统操作03|chmod、vim
  • 数据库同步中间件DBSyncer安装配置及使用
  • 虚幻5描边轮廓材质
  • ISP帳戶會記錄什麼資訊?
  • Facebook如何避免因IP变动而封号?实用指南
  • EXCEL数据清洗的几个功能总结备忘
  • web网页连接MQTT,显示数据与下发控制命令
  • 数据结构day3作业