二叉搜索树第k小元素


二叉搜索树的中序遍历是一个递增的序列(左根右)

  1. 中序遍历完整二叉搜索树,每次将遍历到的节点存入数组中去,找到第k - 1个节点返回即可

    • k是从下标1开始的,存到结果数组res中,但是下标是从0开始的.
    • 这个样例res = [1,2,3,4,5,6]
    • 时间复杂度O(n) n 表示有多少个节点
  2. 中序遍历二叉搜索树k次,返回第K次结果;
    时间复杂度:O(k)
var kthSmallest = function(root, k) {// 中序遍历 根左右const res = [];dfs(root); // res = [1, 2, 3, 4, 5]return res[k - 1];function dfs(root) {if (root == null) return;dfs(root.left);res.push(root.val);dfs(root.right);}
};

第二中做法

var kthSmallest = function(root, k) {var res = null; // 全局变量dfs(root);return res;function dfs(root) {if (root === null) return false;if (dfs(root.left)) return true;if (--k === 0) {res = root.val;return true;}return dfs(root.right);}
};

二叉搜索树第k小元素相关推荐

  1. 二叉树 寻找二叉搜索树第K大的节点

    给定一颗二叉搜索树,返回该二叉搜索树第K大的节点 思路:由于二叉搜索树的中序遍历序列是从小到大的序列,模拟这一过程每访问一个节点,count++直到第K个 注意点: 由于递归的进入与返回过程,递归调用 ...

  2. 二叉搜索树的第 k 大节点

    二叉搜索树的第 k 大节点 1.参考资料 https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/ 2. ...

  3. 二叉搜索树的第 k 大节点(递归,反中序遍历 + 提前返回)

    题意: 给定一棵二叉搜索树,请找出其中第k大的节点. 基于此性质:二叉搜索树的中序遍历为 递增序列 根据以上性质,易得二叉搜索树的 中序遍历倒序 为 递减序列 . 因此,求 "二叉搜索树第 ...

  4. 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点

    [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 文章目录 [LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点 一.中序遍历(提前返回) 一.中序遍历(提前返回) ...

  5. 【数据结构】树与树的表示、二叉树存储结构及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树与哈夫曼编码、集合及其运算

    1.树与树的表示 什么是树? 客观世界中许多事物存在层次关系 人类社会家谱 社会组织结构 图书信息管理 分层次组织在管理上具有更高的效率! 数据管理的基本操作之一:查找(根据某个给定关键字K,从集合R ...

  6. C++ 第八节数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)

    第一次,C++和数据结构联合推出,倾情献上呦~~ 给个关注吧 23333~~~~~~(现在每天系统就给我一个机器人的粉丝量了55555~~~~~) 本节内容,我们将着重来探讨 二叉树 中特殊的两种树- ...

  7. 二叉树进阶--二叉搜索树

    目录 1.二叉搜索树 1.1 二叉搜索树概念 1.2 二叉搜索树操作 1.3 二叉搜索树的实现 1.4 二叉搜索树的应用 1.5 二叉搜索树的性能分析 2.二叉树进阶经典题: 1.二叉搜索树 1.1 ...

  8. 二叉搜索树(BST的理论剖析+代码实现)

    二叉搜索树(BST树) 文章目录 二叉搜索树(BST树) 1.二叉搜索树的概念 2.二叉搜索树的结构定义 2.1 二叉搜索树结点模板的定义 2.2 二叉搜索树类模板的定义 3.二叉搜索树的效率 4.二 ...

  9. 详解二叉搜索树的增删改查

    文章目录 二叉搜索树 1.1 定义 二.二叉搜索树基本结构 三.二叉搜索树的具体实现 3.1 插入节点 3.2 查询节点 3.3 删除节点(⭐️) 3.4 二叉搜索树的遍历 四.二叉搜索树的性能分析和 ...

最新文章

  1. php mysql pdo use_PHP连接到mysql的方法--mysqli和PDO
  2. Centos系统磁盘扩容
  3. python3编码转换_Python3编码转换
  4. 让Bootstrap 3兼容IE8浏览器
  5. GitLab 分享项目到指定小组或者指定用户
  6. 一般用css设置中文字体的Unicode编码
  7. @@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT
  8. MySQL常用DDL语法总结
  9. 无头浏览器Selenium的使用要点
  10. PHP小白之路1--PHP之简易留言板设计
  11. 中心极限与大数定理律的关系_【小结】实数域的基本定理
  12. html文字段落i排版,i排版怎么修改字体?i排版字体排版详细介绍
  13. UNI-APP_uni-app中设置radio和switch的大小
  14. 字节女实习生被通报批评,只因晚上12点就睡觉
  15. 量化新手初识基金绩效分析
  16. 成功入园啦~ BoomShakalaka
  17. 基于NAR神经网络的时间序列预测
  18. 在opencv中如何生成灰度图
  19. 计算机网络(一)——网络编程
  20. 初识Memcache---(2)使用memcache

热门文章

  1. matlab控制图像的边界(margin),subplot的间距(gap)
  2. react 点击使父元素消失_React 基础:Refs 和 DOM 引用之间的关系
  3. 学python能做什么-学了Python都能干什么,哪个最赚钱?
  4. python编程软件哪个好-来 看看谁最适合学Python编程
  5. 开课吧python全栈靠谱么-杭州Web全栈
  6. python怎么画简单图-python绘制简单彩虹图
  7. python界面-Python GUI 编程(Tkinter)
  8. 学python有前途吗-学python有前途吗?
  9. python函数定义及调用-python 函数定义及调用
  10. 嵌入式实时音乐语音识别系统的实现