leetcode230. 二叉搜索树中第K小的元素

题目链接:

https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/

题目:

给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。

说明:
你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

示例 1:

输入: root = [3,1,4,null,2], k = 1
   3
  / \
 1   4
  \
   2
输出: 1

示例 2:

输入: root = [5,3,6,2,4,null,null,1], k = 3

       5
      / \
     3   6
    / \
   2   4
  /
 1
输出: 3

思路:中序遍历,统计即可。
 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     int kthSmallest(TreeNode* root, int k) {
13         int val;
14         dfs(root,val,k);
15         return val;
16     }
17     void dfs(TreeNode *root,int &val,int &k){
18         if(root==NULL) return;
19         dfs(root->left,val,k);
20         if((--k)==0){val=root->val;return;}
21         dfs(root->right,val,k);
22     }
23 };

 

posted @ 2018-12-07 22:50  xzhws  阅读(130)  评论(0编辑  收藏  举报