230. 二叉搜索树中第K小的元素 中等 中序迭代
Published on 2022-11-17 23:01 in 暂未分类 with 林动

230. 二叉搜索树中第K小的元素 中等 中序迭代

    1. 二叉搜索树中第K小的元素
      给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

    示例 1:

    输入:root = [3,1,4,null,2], k = 1
    输出:1
    示例 2:

    输入:root = [5,3,6,2,4,null,null,1], k = 3
    输出:3

    提示:

    树中的节点数为 n 。
    1 <= k <= n <= 104
    0 <= Node.val <= 104

    进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode() {}
     *     TreeNode(int val) { this.val = val; }
     *     TreeNode(int val, TreeNode left, TreeNode right) {
     *         this.val = val;
     *         this.left = left;
     *         this.right = right;
     *     }
     * }
     */
    class Solution {
        public int kthSmallest(TreeNode root, int k) {
            Deque<TreeNode> stk=new LinkedList<>();
            int cnt=0;
            while(root!=null||!stk.isEmpty()){
            	while(root!=null){
            		stk.push(root);
            		root=root.left;
            	}
            	root=stk.pop();
            	cnt++;
            	if(cnt==k)return root.val;
            	root=root.right;
            }
            return 0;
        }
    }
    
    posted @   林动  阅读(7)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
    · 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
    · 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
    · 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
    · 【自荐】一款简洁、开源的在线白板工具 Drawnix
    点击右上角即可分享
    微信分享提示