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

OD C卷 - 二叉树计算

文章目录

  • 二叉树计算

二叉树计算

在这里插入图片描述
每个节点的值等于左子树、右子树中所有子孙节点的数值求和,构造出一个新的求和节点,整体结构与原始二叉树一致,只是节点data有变化。

输入描述
第一行输入二叉树的中序遍历;
第二行输入二叉树的前序遍历
输出描述
求和树的中序遍历,以空格分隔

示例1
输入:
7 -2 6 6 9
6 7 -2 9 6
输出:
-2 0 20 0 61

思路:

  1. 根据输入恢复二叉树【递归】;
  2. 构造求和树,并中序遍历【递归】;

# 节点定义
class Node:def __init__(self, data, left=None, right=None):self.data = dataself.left = leftself.right = rightdef create_btree(arr):""" 根据先序、中序遍历唯一恢复出二叉树 """if not arr:return None# 从先序遍历中取一个根global pre_travelif pre_travel:data = pre_travel.pop(0)root = Node(data)else:return None# 递归创建左右子树idx = arr.index(data)left_arr = arr[:idx]right_arr = arr[idx+1:]root.left = create_btree(left_arr)root.right = create_btree(right_arr)return rootmid_travel = list(map(int, input().strip().split()))
pre_travel = list(map(int, input().strip().split()))# 从前序遍历中依次取一个根节点,在中序遍历中一分为二,然后分别构建左右子树
root = create_btree(mid_travel)# 构建求和树
def calc_sum(root):if root is None:return 0elif root.left is None and root.right is None:return root.dataelse:return root.data + calc_sum(root.left) + calc_sum(root.right)def create_sum_tree(root):if root is None:return Noneroot.data = calc_sum(root.left) + calc_sum(root.right)root.left = create_sum_tree(root.left)root.right = create_sum_tree(root.right)return rootsum_root = create_sum_tree(root)# 中序遍历
result = []
def mid_travel(root):if root is None:returnmid_travel(root.left)result.append(root.data)mid_travel(root.right)returnmid_travel(sum_root)# 拼接输出字符串
output_str = ""
for e in result:output_str += str(e) + " "
print(output_str[:-1])
http://www.dtcms.com/a/394363.html

相关文章:

  • DiffDock 环境安装和使用教程
  • NVIC中的不可屏蔽中断NMI(Non-Maskable Interrupt)是什么?
  • TypeORM 浅析
  • 2.4 死锁 (答案见原书 P165)
  • 算法与数据结构:常见笔试题总结
  • trae使用playwright MCP方法流程
  • anaconda安装tensorflow遇到的一个错误
  • 不同浏览器对 http.server 提供MP4 文件支持差异分析
  • Python 实战:内网渗透中的信息收集自动化脚本(10)
  • leetcode 206 反转链表
  • AI智能的网站SEO优化服务商
  • 生产者客户端
  • Puppeteer 在爬取电商 JavaScript 页面的使用
  • 2015/12 JLPT听力原文 问题四
  • 【设计模式】备忘录模式
  • STM32_07_按键
  • 基于迁移学习和SqueezeNet的滚动轴承故障诊断(MATLAB)
  • 实战项目(十二:《AI画质增强与LED驱动控制:一场关于‘创造’与‘还原’的对话》):从LED冬奥会、奥运会及春晚等大屏,到手机小屏,快来挖一挖里面都有什么
  • 开发避坑指南(52):IDEA 2025.1.3 顶部显示类完整路径的设置方法
  • 安装Qt新之后出现两本帮助手册
  • Rust_2025:阶段1:day7.2unsafe , 链接相关
  • 【论文速递】2025年第15周(Apr-06-12)(Robotics/Embodied AI/LLM)
  • 设计模式简单说明:责任链与规则树
  • 自动备份脚本 mysql_hourly_backup.sh
  • SuperGLUE:自然语言理解的挑战与进步
  • 线程安全的单例模式、自旋锁,以及读者写者问题
  • U盘长期插在电脑上的影响
  • Windows 系统部署 PaddleOCR —— 基于 EPGF 架构
  • 数据一致性指的是什么?如何实现数据一致性?
  • 初识消息队列的世界