[Day39]-[二叉树] 二叉搜索树中第 K 小的元素
作者:方勇(gopher)
- 2022 年 5 月 10 日
本文字数:456 字
阅读完需:约 1 分钟
230. 二叉搜索树中第K小的元素
给定一个二叉搜索树的根节点
root
,和一个整数k
,请你设计一个算法查找其中第k
个最小元素(从 1 开始计数)。
示例 1:
输入:root = [3,1,4,null,2], k = 1
输出:1
复制代码
示例 2:
输入:root = [5,3,6,2,4,null,null,1], k = 3
输出:3
复制代码
题解:
func TestKthSmallest(t *testing.T) {
array := []int{1, 2, 3, 4, 5}
var buildTree func(left, right int) *TreeNode
buildTree = func(left, right int) *TreeNode { // 构建一颗二叉树
if left > right {
return nil
}
mid := (left + right) >> 1
return &TreeNode{
array[mid],
buildTree(left, mid-1),
buildTree(mid+1, right),
}
}
root := buildTree(0, len(array)-1)
var list []int
var k = 3
var dfs func(root *TreeNode) int
dfs = func(root *TreeNode) int {
if root != nil {
dfs(root.Left)
list = append(list, root.Val)
if len(list) == k {
return root.Val
}
dfs(root.Right)
}
return -1
}
t.Log(dfs(root))
}
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 7
方勇(gopher)
关注
Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入
我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!
评论