leetcode[230]:Kth Smallest Element in a BST
2015-07-28 21:34
274 查看
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?
Hint:
1.Try to utilize the property of a BST.
2.What if you could modify the BST node’s structure?
3.The optimal runtime complexity is O(height of BST).
根据中序遍历,遍历到第k个元素即可。
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?
Hint:
1.Try to utilize the property of a BST.
2.What if you could modify the BST node’s structure?
3.The optimal runtime complexity is O(height of BST).
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ int kthSmallest(struct TreeNode* root, int k) { struct TreeNode stack[100]; struct TreeNode *tmp; int i=0; int l=0; tmp=root; while(1) { if(tmp->left) { stack[i++] = *tmp; stack[i-1].left=NULL; tmp=tmp->left; continue; } if(++l==k) return tmp->val; if(tmp->right) { tmp=tmp->right; continue; } if(i==0) break; tmp = &stack[--i]; } }
根据中序遍历,遍历到第k个元素即可。
相关文章推荐
- Binary Search Tree Iterator,Reverse Nodes in k-Group
- [LeetCode] Convert Sorted List to Binary Search Tree
- [LeetCode] Convert Sorted Array to Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- [LeetCode] Unique Binary Search Tree
- Convert Sorted Array to Binary Search Tree
- LeetCode:Binary Search Tree相关题目合集
- LeetCode-Convert Sorted Array to Binary Search Tree
- Convert Sorted Array(List) to Binary Search Tree
- Validate Binary Search Tree
- convert sorted array to binary search tree
- [Leetcode]Recover Binary Search Tree
- [Leetcode]Validate Binary Search Tree
- [Leetcode]Unique Binary Search Trees II
- [Leetcode]Convert Sorted List to Binary Search Tree
- leetcode--ValidateBinarySearchTree
- leetcode--RecoverBinarySearchTree
- leetcode--ConvertSortedListtoBinarySearchTree
- Set--TreeSet实现分析