230. 二叉搜索树中第 K 小的元素
要找出二叉搜索树中第K小的元素,可以利用二叉搜索树的性质:左子树的值小于根节点,右子树的值大于根节点。因此,对二叉树进行中序遍历即可得到从小到大的有序序列。具体实现时,在中序遍历过程中,每当访问根节点时,将K减1,当K减至0时,当前节点即为所求的第K小元素。
class Solution {
public:int ans = 0;void dfs(TreeNode* root,int& k) {if (!root) return;dfs(root->left,k);if (--k == 0) {ans = root->val;return;}dfs(root->right,k);}int kthSmallest(TreeNode* root, int k) {dfs(root,k);return ans;}
};
时间复杂度:O(n),n为二叉树节点数
空间复杂度:O(h),h为树的高度