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

lc1028-从先序遍历还原二叉树

题目描述

  • 字符串转二叉树
  • 根节点深度为 0,其子节点深度为 1,依次类推
  • 题目保证若只有一个子节点,必为左子树

示例

输入:"1-2--3--4-5--6--7"
输出:[1,2,5,3,4,6,7]
解释:1/   \2     5/ \   / \
3   4 6   7
输入:"1-2--3---4-5--6---7"
输出:[1,2,5,3,null,6,null,4,null,7]
解释:1/  \2    5/    /3    6/    /
4    7
输入:"1-401--349---90--88"
输出:[1,401,null,349,88,90]
解释:1/401/   \349    88/
90

题解

  • 思路:递归
    1. 把字符串按顺序解析出来,记录信息对:(深度, 值)
    2. 若下一个节点的深度比当前节点大,说明是儿子节点,继续 dfs;不然就回溯
type Node struct {depth intval   int
}var nodes = make([]Node, 0, 1010)
var k = 0func recoverFromPreorder(traversal string) *TreeNode {n := len(traversal)for i := 0; i < n; {depth, val := 0, 0for traversal[i] == '-' {depth ++i ++}for i < n && traversal[i] != '-' {val = val * 10 + int(traversal[i] - '0')i ++}nodes = append(nodes, Node{depth, val})}return dfs(0)
}func dfs(d int) *TreeNode {if k == len(nodes) { return nil }root := &TreeNode{Val: nodes[k].val}k ++if k < len(nodes) && d < nodes[k].depth {root.Left = dfs(d + 1)}if k < len(nodes) && d < nodes[k].depth {root.Right = dfs(d + 1)}return root
}
http://www.wxhsa.cn/company.asp?id=5015

相关文章:

  • P12558 [UOI 2024] Heroes and Monsters 题解
  • 加把劲——2025 年中总结
  • Ability-GetCurrentActorInfo()-IsLocallyControlled()和APawn::IsLocallyControlled()
  • 应该遵守的代码规范与读《数学之美》有感
  • AbilitySystemComponent和AbilityTask
  • AT_arc171_c [ARC171C] Swap on Tree
  • 202509_QQ_冷门的Base家族
  • SpawnActorDeferred()和SpawnActorOfClass()
  • 【QT】信号和槽
  • 学习日报|线程池专题学习总结 - 详解
  • 如何设计业务架构 - 智慧园区
  • snmp协议
  • 刷题复习(四)二分搜索
  • aardio | 通过点击checkbox复选框本身判断是否勾选
  • 项目介绍
  • 新媒体运营用AI排版工具|10分钟搞定公众号图文的全流程指南
  • 练习第一天学习的内容
  • 常见小错误 FREQUENTLY MADE MISTAKES IN OI
  • ctf工具整理
  • 力扣39题 组合总和
  • 250915 jave se简单过完一遍
  • 详细介绍:Linux相关概念和易错知识点(44)(IP地址、子网和公网、NAPT、代理)
  • 详细解析为什么将 ThreadLocal 声明为 static final ?
  • AT_arc183_b [ARC183B] Near Assignment
  • 0128_模板方法(Template Method)
  • kubectl 常用命令的分类汇总(一)
  • 完整教程:C3P0连接池适配HGDB
  • kubectl 常用命令的分类汇总(二)
  • ECT-OS-JiuHuaShan框架的逻辑是自洽的,是基于数学表达,不替代现实的苦辣酸甜。
  • 《FastAPI零基础入门与进阶实战》第18篇:Token验证改善--CRUD中应用 - 详解