1. 程式人生 > >【LeetCode】 230. Kth Smallest Element in a BST(非遞迴中序遍歷二叉樹)

【LeetCode】 230. Kth Smallest Element in a BST(非遞迴中序遍歷二叉樹)

因為這是一棵二叉搜尋樹,所以找它的第 kk 小值,就是這棵二叉搜尋樹的中序遍歷之後的第 kk 個數,所以只需要將這棵樹進行中序遍歷即可,下面程式碼是非遞迴形式的二叉樹中序遍歷。
程式碼如下:

/**
 * 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; } } };