千家信息网

python二叉搜索树中第K小的元素是什么

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章给大家介绍python二叉搜索树中第K小的元素是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第
千家信息网最后更新 2025年02月02日python二叉搜索树中第K小的元素是什么

这篇文章给大家介绍python二叉搜索树中第K小的元素是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。

说明:
你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

示例 1:

输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 1

示例 2:

输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 3

进阶:
如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化 kthSmallest 函数?

解题思路:

1,这是一个中序遍历加剪枝优化的题目

2,如果左子树长度大于k,就不用遍历右子树了

3,在总结果中选第k个

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func kthSmallest(root *TreeNode, k int) int {    r:=mid(root,k)    return r[k-1]    }
func mid(root*TreeNode,k int)[]int{ var r [] int if root==nil{ return r } l:=mid(root.Left,k) if len(l)>=k{ return l } r=append(l,root.Val) if len(l)+1>=k{ return r } rr:=mid(root.Right,k-len(l)-1) r=append(r,rr...) return r}

计算给定二叉树的所有左叶子之和。

示例:

3
/ \
9 20
/ \
15 7

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

解题思路:

1,如果是左叶子,则将当前节点加入和

2,计算当前节点的左、右子树的左叶子和

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func sumOfLeftLeaves(root *TreeNode) int {    if root==nil{        return 0    }    if root.Left!=nil{        if root.Left.Left==nil&&root.Left.Right==nil{             return root.Left.Val + sumOfLeftLeaves(root.Right)        }          }   return sumOfLeftLeaves(root.Left)+ sumOfLeftLeaves(root.Right)}

关于python二叉搜索树中第K小的元素是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

搜索 元素 叶子 示例 子树 内容 函数 思路 更多 节点 帮助 输入 输出 不错 最小 有效 频繁 不用 两个 个数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 初中网络安全考试题库 互联网金融行业数据库 山西erp软件开发价格行情 酒店网络安全新闻稿 网络安全行为笔记 专科计算机网络技术自考 手机销售系统用了多少个数据库表 产品数据库平台 网络规划和网络安全 人力资源软件开发 房地产 网络技术培训大概多少钱 端游的服务器是干什么的 普陀区辅助网络技术备案 查询所有数据库实例名 软件开发直招士官一般干什么 软件开发外包服务公司 domino 分区服务器配置 管理邮件服务器上的邮件 医院网络安全培训记录内容 app是什么软件开发的 物流网络技术的展望 公司网络安全知识普及 手机启动不了怎么导数据库 工控机软件开发语言 网络推广中的服务器怎么使用 软件开发技术方案设计书 我的世界服务器和好友一起玩 安徽专业软件开发如何收费 网易云课堂计算机网络技术 奉贤区一站式软件开发质量保证
0