c++怎么计算二叉搜索树中第K小的元素

这篇文章主要讲解了“c++怎么计算二叉搜索树中第K小的元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c++怎么计算二叉搜索树中第K小的元素”吧!

成都创新互联-专业网站定制、快速模板网站建设、高性价比呼玛网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式呼玛网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖呼玛地区。费用合理售后完善,十载实体公司更值得信赖。

算法:

这类题目的核心思想是,利用二叉树的中序遍历是从小到大的,将其转变成数组,然后对这个有序数组进行取值操作就可以了。

特别注意:转换之后的数组有可能会存在重复的节点,此时的话,我们就需要对数组进行去重的操作。

题目1:二叉树中第二小的节点

代码实现:

/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func findSecondMinimumValue(root *TreeNode) int {    res := midOrder(root)    m := make(map[int]int)    for _,v:=range res {        m[v] = v    }       resp := []int{}    for _,v:=range m {        resp = append(resp,v)    }    if len(resp)>=2{        sort.Ints(resp)        return resp[1]    }    return -1}func midOrder(root *TreeNode) (res []int) {    if root == nil {        return    }    res = append(res,midOrder(root.Left)...)    res = append(res,root.Val)    res = append(res,midOrder(root.Right)...)    return}

题目2:二叉搜索树中第K小的元素

代码实现:

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

感谢各位的阅读,以上就是“c++怎么计算二叉搜索树中第K小的元素”的内容了,经过本文的学习后,相信大家对c++怎么计算二叉搜索树中第K小的元素这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


当前文章:c++怎么计算二叉搜索树中第K小的元素
文章网址:http://bzwzjz.com/article/pojhid.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站设计 企业手机网站建设 网站建设费用 成都网站建设 成都网站制作 成都网站设计 网站制作 四川成都网站制作 响应式网站设计 成都网站制作 网站建设公司 古蔺网站建设 外贸网站建设 成都网站建设 营销网站建设 响应式网站设计方案 网站建设 重庆企业网站建设 成都网站设计 企业网站建设 攀枝花网站设计 成都网站制作