[leetcode] 230.Kth Smallest Element in a BST

原创 2015年07月08日 14:43:26

题目:
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的位置,那么赋值,并且返回。
以上。
代码如下:

/**
 * 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 value = 0;
     int index = 0;
     InOrder(root, k, value, index);
     return value;
    }
    void InOrder(TreeNode* root, int k, int& value, int& before) {
        if(root == NULL)return;
        InOrder(root->left, k, value, before);
        before++;
        if(before == k){
            value = root->val;
            before = k;
            return;
        }
        else if(before > k)return;
        InOrder(root->right, k, value, before);
    }
};

leetcode 230: Kth Smallest Element in a BST

leetcode 230: Kth Smallest Element in a BST python java c++
  • xudli
  • xudli
  • 2015年07月07日 06:14
  • 9356

LeetCode 230: Kth Smallest Element in a BST

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not...
  • sunao2002002
  • sunao2002002
  • 2015年07月02日 14:27
  • 5598

LeetCode 230: Kth Smallest Element in a BST 查找二叉排序树

博客转载请注明地址:题目描述题目地址:https://leetcode.com/problems/kth-smallest-element-in-a-bst/ 在一颗二叉排序树当中,寻找第k大的数。...
  • SunliyMonkey
  • SunliyMonkey
  • 2015年09月02日 15:34
  • 1305

leetcode 230. Kth Smallest Element in a BST-递归|非递归

原题链接:230. Kth Smallest Element in a BST 【思路-Java、Python】——递归实现 我们知道二分查找数(BST)的性质——任何一个节点的值均大于左子树的任意节...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016年05月24日 11:17
  • 1087

LeetCode 230. Kth Smallest Element in a BST 解题报告

230. Kth Smallest Element in a BST My Submissions Question Total Accepted: 35869 Total Su...
  • bruce128
  • bruce128
  • 2016年02月16日 15:27
  • 1543

leetcode230:Kth Smallest Element in a BST(medium)

在上一章博文中记录了leetcode第378道题(详细内容查看上一章),该题是返回一个矩阵中第k小的元素,与该题类似,这道题是返回一个二叉搜索树中第k小的元素。 题目:Given a binary s...
  • qq_18297933
  • qq_18297933
  • 2016年08月21日 21:27
  • 291

LeetCode 230. Kth Smallest Element in a BST(二叉搜索树中的第K个元素)

原题网址:https://leetcode.com/problems/kth-smallest-element-in-a-bst/ Given a binary search tree, writ...
  • jmspan
  • jmspan
  • 2016年04月05日 11:16
  • 631

230.Kth Smallest Element in a BST

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. N...
  • sjt091110317
  • sjt091110317
  • 2015年07月02日 16:02
  • 257

leetCode 230.Kth Smallest Element in a BST

//找到一个二叉查找树的第K小的个元素 //中序遍历二叉查找树,第K次访问的值就是整个二叉树的第K小的元素 struct TreeNode { int val; TreeNode *l...
  • u013994536
  • u013994536
  • 2016年04月15日 08:59
  • 120

[LeetCode]230.Kth Smallest Element in a BST

题目Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.No...
  • SunnyYoona
  • SunnyYoona
  • 2015年08月03日 11:34
  • 1187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 230.Kth Smallest Element in a BST
举报原因:
原因补充:

(最多只允许输入30个字)