Given A binary search tree, write a function to kthSmallest
find the kth smallest element in it.
Note:
You may assume k are always valid, 1≤k≤bst's total elements.
In order to find the smallest element in the binary tree, the middle sequence traversal can be, the specific code and another binary tree iterator almost in fact, the problem because of the = = Write the bug adjusted for a long time, careful ah ah ah. The code is as follows:
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 */Ten classSolution { One Public: A intKthsmallest (treenode* root,intk) { -Stack<treenode *>s; -Map<treenode *,BOOL>m; the if(Root = NULL)return 0; - S.push (root); - while(!S.empty ()) { -TreeNode * t =s.top (); + if(T->left &&!m[t->Left ]) { -S.push (t->Left ); +M[t->left] =true; A Continue; at } - S.pop (); Here POPs -k--; - if(k = =0) - returnT->Val; - if(T->right &&!m[t->Right ]) { inS.push (t->Right ); -M[t->right] =true; to } + - } the } *};
Leetcode oj:kth smallest element in a BST (K-min elements in a binary tree)