剑指offer-二叉搜索树的第k个结点
2017-08-08 20:41
323 查看
问题
题目:[剑指offer-二叉搜索树的第k个结点]思路
对于BST而言,最常见的遍历就是中序。因为可以递增序列,此时拿到第k个就可以了。代码
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: TreeNode* KthNode(TreeNode* pRoot, int k) { if(!pRoot || k < 1) return NULL; int cnt = 0; stack<TreeNode*> stk; while(pRoot || !stk.empty()){ while(pRoot){ stk.push(pRoot); pRoot = pRoot->left; } if(!stk.empty()){ pRoot = stk.top(); stk.pop(); ++cnt; if( cnt == k ) return pRoot; pRoot = pRoot->right; } } return NULL; } };
相关文章推荐
- 剑指offer-62.二叉搜索树的第k个结点
- 剑指offer-面试题63-二叉搜索树的第k个结点
- 【剑指Offer学习】【面试题63:二叉搜索树的第k个结点】
- 剑指offer—二叉搜索树的第k个结点
- [剑指offer]二叉搜索树的第k个结点
- 剑指offer面试题目63(二叉搜索树的第k个结点)
- 剑指Offer—62—二叉搜索树的第k个结点
- 剑指offer(C++)——二叉搜索树的第k个结点
- 【剑指Offer学习】【面试题63:二叉搜索树的第k个结点】
- 【剑指Offer】面试题63:二叉搜索树的第k个结点
- 剑指offer---二叉搜索树的第k个结点
- 剑指offer—二叉搜索树的第K个结点
- 剑指offer 编程题(59):二叉搜索树的第k个结点
- 剑指offer-面试题63:二叉搜索树的第K个结点
- 【剑指Offer】二叉搜索树的第k个结点
- 剑指offer:二叉搜索树的第k个结点
- 剑指offer——二叉搜索树的第k个结点
- 剑指offer-二叉搜索树的第k个结点
- 剑指offer_二叉树---二叉搜索树的第k个结点
- 剑指offer——二叉搜索树的第k个结点