【LeetCode】 230. Kth Smallest Element in a BST(非遞迴中序遍歷二叉樹)
阿新 • • 發佈:2018-12-21
因為這是一棵二叉搜尋樹,所以找它的第 小值,就是這棵二叉搜尋樹的中序遍歷之後的第 個數,所以只需要將這棵樹進行中序遍歷即可,下面程式碼是非遞迴形式的二叉樹中序遍歷。
程式碼如下:
/**
* 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) {
TreeNode* now = root;
stack<TreeNode*> s;
while(!s.empty() || now) {
while(now) {
s.push(now);
now = now->left;
}
now = s.top();
s. pop();
k--;
if(k==0) return now->val;
now = now->right;
}
}
};