230. Kth Smallest Element in a BST
来源:互联网 发布:尼尔森数据报告 编辑:程序博客网 时间:2024/05/18 00:42
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.
Note:
You may assume k is always valid, 1 ≤ k ≤ BST’s total elements.
Follow up:
What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?
在二叉搜索树中,找到第K个元素。
算法如下:
1、计算左子树元素个数left。
2、 left+1 = K,则根节点即为第K个元素
left >= k, 则第K个元素在左子树中,
left +1 < k, 则转换为在右子树中,寻找第K-left-1元素。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int kthSmallest(TreeNode* root, int k) { if (root == NULL) return 0; int lsize = treeSize(root->left); if (lsize + 1 == k) return root->val; else if (lsize >= k) return kthSmallest(root->left, k); else return kthSmallest(root->right, k - lsize - 1); } int treeSize(TreeNode *root) { if (root == NULL) return 0; return 1 + treeSize(root->left) + treeSize(root->right); }};
0 0
- 230.Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 230. Kth Smallest Element in a BST
- 关于V社
- android系统应用安装
- PHP回调函数的实现方法
- 红黑树(五)之 Java的实现
- 批量重命名文件
- 230. Kth Smallest Element in a BST
- 自媒体人应该拥有怎样的素质
- 第01章 Java简介以及JDK的安装和环境变量配置
- RecyclerView下拉刷新bug修复
- 第二章 body标签里的故事
- centos7变化之启动流程
- JSON学习
- 数据结构经典算法学习之河内之塔(汉诺塔)
- web前端之精通dojo一:创建选项框表单