LeetCode OJ:Kth Smallest Element in a 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.

求二叉树中第k个最小的元素,中序遍历就可以了,具体代码和另一个Binary Tree Iterator差不多其实,这题由于把=写成了==调bug调了好久,细心细心啊啊啊。代码如下:

 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         stack<TreeNode *> s;
14         map<TreeNode *, bool> m;
15         if(root == NULL) return 0;
16         s.push(root);
17         while(!s.empty()){
18             TreeNode * t = s.top();
19             if(t->left && !m[t->left]){
20                 s.push(t->left);
21                 m[t->left] = true;
22                 continue;
23             }
24             s.pop();  //这里pop
25             k--;
26             if(k == 0)
27                 return t->val;
28             if(t->right && !m[t->right]){
29                 s.push(t->right);
30                 m[t->right] = true;
31             }
32
33         }
34     }
35 };
时间: 2024-12-24 19:44:49

LeetCode OJ:Kth Smallest Element in a BST(二叉树中第k个最小的元素)的相关文章

[LeetCode][JavaScript]Kth Smallest Element in a BST

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

[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. Note: You may assume k is always valid, 1 ≤ k ≤ BST's total elements. 问题:找出二叉搜索树种第 k 小的元素. 一个深度遍历的应用.使用递归.或者借助栈都可以实现深度遍历.本文代码使用递归实现. 1 void visit(TreeNod

(medium)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. 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

leetcode 之 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. 给定一棵二叉查找树, 找到第k个小的元素. 思路,利用二叉查找树的特性,其左子树的元素小于根节点,右子树的元素大于根节点.当采用中序遍历时,可以得到从小到

leetCode(46):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. 直观地一想,查找第k小的数,不就是遍历到第k个数吗?所以中序遍历很容易想到,如下: /** * Definition for a binary tree node.

Java for LeetCode 230 Kth Smallest Element in a BST

解题思路: 直接修改中序遍历函数即可,JAVA实现如下: int res = 0; int k = 0; public int kthSmallest(TreeNode root, int k) { this.k = k; inorderTraversal(root); return res; } public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<

LeetCode 230. Kth Smallest Element in a BST 动态演示

返回排序二叉树第K小的数 还是用先序遍历,记录index和K进行比较 class Solution { public: void helper(TreeNode* node, int& idx, int k, int& res){ if(res!=INT_MAX) return; if(!node) return; //a(node) //lk("root",node) //dsp helper(node->left, idx, k, res); if(idx==

[Leetcode] Binary search/tree-230. 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

【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. Note: You may assume k is always valid, 1 ≤ k ≤ BST's total elements. 题意: 给定一个二分搜索树,返回第K小的结点 思路: 只要明白BST树的原理,只要中序遍历一遍BST树即可.求第K小的,只需遍历前K个结点就OK. C++: 1 /*