个人网站设计企业/网络营销方案ppt
题目地址:
https://www.acwing.com/problem/content/66/
给定一棵二叉搜索树,请找出其中的第kkk小的结点。你可以假设树和kkk都存在,并且1≤k≤n1≤k≤n1≤k≤n,nnn为树的总结点数。
数据范围:
树中节点数量[1,500][1,500][1,500]。
中序遍历即可。代码如下:
struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};class Solution {
public:TreeNode* kthNode(TreeNode* root, int k) {return dfs(root, k);}TreeNode* dfs(TreeNode* x, int& k) {if (!x) return nullptr;TreeNode* l = dfs(x->left, k);if (l) return l;if (!--k) return x;return dfs(x->right, k);}
};
时间复杂度O(n)O(n)O(n),空间O(h)O(h)O(h)。