0x00 题目
给定二叉搜索树(BST)的根节点 root
和要插入树中的值 value
将值插入
二叉搜索树
返回插入后二叉搜索树的根节点
输入数据保证
新值和原始二叉搜索树中的任意节点值都不同
注意,可能存在多种
有效的插入方式
只要树在插入后仍保持
为二叉搜索树即可
你可以返回任意
有效的结果
0x01 思路
因为是二叉搜索树
对于任意节点 root
而言
左子树
上所有节点的值均小于
root.val
右子树
上所有节点的值均大于
root.val
且它们都是二叉搜索树
根据 val
与 root.val
的大小关系
可以确定要将 val
插入到哪个子树中
子树为空则插入
新节点
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 insertIntoBST(_ root: TreeNode?, _ val: Int) -> TreeNode? {
if root == nil { return TreeNode(val) }
var node = root
while node != nil {
// 小于节点值
if val < node!.val {
if node!.left == nil {
node!.left = TreeNode(val)
break
}else{
node = node!.left
}
}
// 大于节点值
else{
if node!.right == nil {
node!.right = TreeNode(val)
break
}else{
node = node!.right
}
}
}
return root
}
0x03 我的作品
欢迎体验我的作品之一:小五笔
五笔学习好帮手 👍🏻
App Store
搜索即可~