当前位置:网站首页>【二叉树】前序遍历构造二叉搜索树
【二叉树】前序遍历构造二叉搜索树
2022-06-30 16:36:00 【豪冷啊】
0x00 题目
给定一个整数数组
它表示BST(即二叉搜索树 )的 先序遍历
构造树并返回其根节点
0x01 思路
二叉搜索树的前序遍历
第一个元素是根节点
往后的元素小于根节点的是左子树的元素大于根节点的是右子树的元素
0x02 解法
语言:Swift
树节点:TreeNode
public class TreeNode {
public var val: Int
public var left: TreeNode?
public var right: TreeNode?
public init() { self.val = 0; self.left = nil; self.right = nil; }
public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
self.val = val
self.left = left
self.right = right
}
}
解法:
func bstFromPreorder(_ preorder: [Int]) -> TreeNode? {
if preorder.isEmpty { return nil }
func build(_ start: Int, _ end: Int) -> TreeNode? {
if start > end { return nil }
else if start == end { return TreeNode(preorder[start]) }
var l = start
var r = end
let first = preorder[start]
// 在区间 [l...r] 内找 最后一个 小于 first 的下标
while l < r {
let mid = l + (r - l + 1) / 2
// 小于往右找
if preorder[mid] < first {
l = mid
}else{
r = mid - 1
}
}
// 第一个元素是根节点
let node = TreeNode(first)
node.left = build(start+1, l)
node.right = build(l+1, end)
return node
}
let r = build(0, preorder.count-1)
return r
}
0x03 我的作品
欢迎体验我的作品之一:小笔记-XNote
让笔记一步到位App Store 搜索即可~
边栏推荐
- 理解现货白银走势的关键
- Parker variable displacement piston pump pv092r1k1t1nmmc
- 【剑指Offer】53 - I. 在排序数组中查找数字 I
- Fragmentary knowledge points of MySQL
- 【机器学习】K-means聚类分析
- Parker proportional overflow valve rs10r35s4sn1jw
- Splitting. JS text title slow loading JS effect
- 分布式机器学习:模型平均MA与弹性平均EASGD(PySpark)
- vue3 响应式数据库—— reactive
- Thinking on large file processing (upload, download)
猜你喜欢

送受伤婴儿紧急就医,滴滴司机连闯五个红灯

编译生成busybox文件系统

【C语言】详解线程 — 线程分离函数 pthread_detach

Login box tricks

Fragmentary knowledge points of MySQL

Hyper-v:在虚拟网络中启用 SR-IOV

Apache 解析漏洞(CVE-2017-15715)_漏洞复现

NFT: 开启加密艺术时代的无限可能

Zero foundation can also be an apple blockbuster! This free tool can help you render, make special effects and show silky slides

广电5G正式启航,黄金频段将如何应用引关注
随机推荐
[C language] detailed explanation of threads - multi threads for collaborative operation
解决方法:STM32使用cJSON解析数据失败
Map collection
[sword finger offer] 52 The first common node of two linked lists
Course design for the end of the semester: product sales management system based on SSM
送受伤婴儿紧急就医,滴滴司机连闯五个红灯
Implementation of graduation project management system based on SSM
K-line diagram must be read for quick start
Radio and television 5g officially set sail, attracting attention on how to apply the golden band
Parker proportional overflow valve rs10r35s4sn1jw
Canvas cloud shape animation
【剑指Offer】53 - I. 在排序数组中查找数字 I
[Netease Yunxin] playback demo build: unable to convert parameter 1 from "asyncmodalrunner *" to "std:: nullptr\u T"**
【Proteus仿真】Arduino UNO利用74LS148扩展中断
Map集合
Rexroth hydraulic control check valve z2s10-1-3x/
中基协:推荐使用电子合同
【C语言】详解线程 — 多线程进行协同运算
网络:服务器网卡组技术原理与实践
China Infrastructure Development Association: electronic contract is recommended