题目
给定一棵二叉搜索树,请找出其中的第k小的结点。
你可以假设树和k都存在,并且1≤k≤树的总结点数。
样例
输入:root = [2, 1, 3, null, null, null, null] ,k = 3
2
/ \
1 3
输出:3
解法:中序遍历
时间复杂度O(n),空间复杂度O(1)
/*** 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:TreeNode *ans;TreeNode* kthNode(TreeNode* root, int k) {dfs(root, k);return ans;}void dfs(TreeNode *u, int &k) {if (!k || !u) return;dfs(u->left, k);k--;if (!k) ans = u;else dfs(u->right, k);}};
