2026/1/27 17:22:53
网站建设
项目流程
网站皮肤是怎么做的,外贸网站建设可以吗,wordpress修改谷歌,公司网站功能输入#xff1a; 二叉搜索树根节点 root#xff0c;整数 k#xff08;从 1 开始计数#xff09;。
要求#xff1a; 返回 BST 中第 k 小的元素。
输出#xff1a; 一个整数#xff08;第 k 小的节点值#xff09;。思路#xff1a;
BST 中序遍历 的经典应用#xff…输入二叉搜索树根节点root整数k从 1 开始计数。要求返回 BST 中第k小的元素。输出一个整数第k小的节点值。思路BST 中序遍历的经典应用BST 的中序遍历结果是严格递增序列所以“第 k 小” “中序遍历第 k 个访问到的节点”。用k作为计数器引用传递中序遍历每访问一个节点就--k当k 0时当前节点值就是答案。提前结束遍历剪枝递归函数返回booltrue表示已经找到答案沿递归栈一路返回不再继续遍历右子树/后续节点。这样避免无意义的遍历尤其当k很小的时候很省事。复杂度时间复杂度O(H k)最坏 O(N)走到最左边需要 O(H)然后访问到第 k 个需要 O(k)。极端情况下退化到 O(N)。空间复杂度O(H)递归栈深度等于树高。classSolution{public:intkthSmallest(TreeNode*root,intk){ans-1;inorder(root,k);returnans;}private:intans;// 返回 true 表示已经找到答案后续直接提前结束boolinorder(TreeNode*node,intk){if(!node)returnfalse;if(inorder(node-left,k))returntrue;if(--k0){ansnode-val;returntrue;}returninorder(node-right,k);}};