leetcode-230-Kth Smallest Element in a BST
来源:互联网 发布:沙迪克慢走丝编程 编辑:程序博客网 时间:2024/06/02 04:11
Kth Smallest Element in a BST
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小的数。
中序遍历二叉排序树,将元素存在数组中,数组中的第K个数就是第K小的数。
递归
/** * 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: void zhongxu(TreeNode* root,int* a,int& i){ if(!root) return; zhongxu(root->left,a,i); a[i++]=root->val; zhongxu(root->right,a,i); } int kthSmallest(TreeNode* root, int k) { int a[10000]; int i=1; zhongxu(root,a,i); return a[k]; }};
/** * 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: void zhongxu(TreeNode* root,int& i,int& ans,int k){ if(!root) return; zhongxu(root->left,i,ans,k); if(i++==k) ans=root->val;// i==k 时, 将答案存在来 zhongxu(root->right,i,ans,k); } int kthSmallest(TreeNode* root, int k) { int i=1,ans; zhongxu(root,i,ans,k); return ans; }};
非递归
/** * 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) { vector<int>v; stack<TreeNode*>s; TreeNode* p; s.push(root); while(!s.empty()){ while(p=s.top()) // 向左走到尽头 s.push(p->left); s.pop();// 空指针出栈 if(!s.empty()){ p=s.top();//取栈顶元素 s.pop();//栈顶元素出栈 v.push_back(p->val);//加到向量vector中 s.push(p->right); } } return v[k-1]; }};
1 0
- #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
- 【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
- .NET通过配置文件的方式实现静态js文件跨域访问
- 从Git上克隆studio项目的步骤
- 排序
- mavenRepository【maven仓库,全都是maven项目,自己可以在里面下载需要的jar包】
- 网站设计,你需要注意什么?
- leetcode-230-Kth Smallest Element in a BST
- Activiti5.9 流程实例中同一个流程businessKey重复的问题
- 2012年5月SAT香港真题解析
- 简单而有用的nohup命令
- 记录好用的软件
- 代码注释
- Address already in use的解决方法
- [iOS]UIView动画学习笔记(上)
- Openfire 性能优化