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

算法刷题Day18: 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.mrgr.cn/news/80231.html

相关文章:

  • JS设计模式之访问者模式
  • Android-ImagesPickers 拍照崩溃优化
  • 【ArcGIS】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作
  • Windows如何安装go环境,离线安装beego
  • OpenCV相机标定与3D重建(20)将单应性矩阵分解为旋转矩阵、平移向量和法向量函数decomposeHomographyMat()的使用
  • 【ETCD】【源码阅读】 深入解析 raftNode.start`函数:Raft 核心启动逻辑剖析
  • gitee仓库的使用
  • 【考前预习】3.计算机网络—数据链路层
  • 【conda/cuda/cudnn/tensorrt】一份简洁的深度学习环境安装清单
  • Mac上使用ln指令创建软链接、硬链接
  • HarmonyOS Next 元服务新建到上架全流程
  • 算法题(2):三步问题
  • 金蝶云资料汇总
  • C++----类与对象(上篇)
  • AOF和RDB【Redis持久化篇】
  • etcd节点扩/缩容
  • 【图像处理lec3、4】空间域的图像增强
  • ubuntu 下的sqlite3
  • 【老白学 Java】日期 / 时间格式化
  • 实拍技巧和富士通用参数
  • 直流开关电源技术及应用
  • 扩展tinyplay使其自适应不同声道数量的媒体
  • 17、ConvMixer模型原理及其PyTorch逐行实现
  • 网络工程师常用软件之配置对比软件
  • 【kubernetes】kubectl get nodes报NotReady
  • 文件的读写