[Leetcode] 230. Kth Smallest Element in a BST 解题报告
来源:互联网 发布:linux怎么查看密码密码 编辑:程序博客网 时间:2024/05/29 19:46
题目:
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?
思路:
BST的中序遍历结果一定是有序的,所以采用中序遍历二叉树,然后返回遍历到的第k个结果即可。如果要频繁查找的话,可以在数据结构中增加一个字段,记录左边节点有多少个。这样可以将查找的时间复杂度降低到O(h),其中h是BST的高度。
代码:
/** * 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 -1; } int index = 0, val = 0; inorderTraverse(root, index, k, val); return val; }private: void inorderTraverse(TreeNode* node, int& index, int k, int& val) { if(node->left) { inorderTraverse(node->left, index, k, val); } if(++index == k) { val = node->val; return; } if(node->right) { inorderTraverse(node->right, index, k, val); } }};
阅读全文
0 0
- [leetcode] 230. Kth Smallest Element in a BST 解题报告
- LeetCode 230. Kth Smallest Element in a BST 解题报告
- LeetCode 230. Kth Smallest Element in a BST 解题报告
- [Leetcode] 230. Kth Smallest Element in a BST 解题报告
- LeetCode-Kth Smallest Element in a BST-解题报告
- 【LeetCode】Kth Smallest Element in a BST 解题报告
- #leetcode#Kth Smallest Element in a BST
- leetcode--Kth Smallest Element in a BST
- Leetcode|Kth Smallest Element in a BST
- [leetcode] Kth Smallest Element in a BST
- 【LeetCode】Kth Smallest Element in a BST
- LeetCode Kth Smallest Element in a BST
- 【leetcode】Kth Smallest Element in a BST
- LeetCode Kth Smallest Element in a BST
- leetcode: Kth Smallest Element in a BST
- Leetcode: Kth Smallest Element in a BST
- [LeetCode] Kth Smallest Element in a BST
- [LeetCode]Kth Smallest Element in a BST
- Tensorflow入门程序MNIST学习
- jdbc连接mysql sqlserver oracle的工具类
- ThinkPHP中 C(),D(),S()
- ECMAScript6入门(不懂的知识多方汇总,很杂。)
- .net c#学习笔记2
- [Leetcode] 230. Kth Smallest Element in a BST 解题报告
- Mysql的联合主键
- 【脚本语言系列】关于Python结构化二进制文件处理Microsoft Excel,你需要知道的事
- 为什么 Git 比 SVN 好
- TCP中的常见定时器及TIME-WAIT原理
- python3 字符串方法
- 基本css,网站开发问题
- void及void指针含义的深刻解析
- 数据结构之——稀疏矩阵