[Leetcode学习-java]Kth Smallest Element in a BST(二叉查询树找第K个最小数)

问题:

难度:easy

说明:

给定一个二叉查询树,找到第K个最小的数。很简单的一道题,主要考数据结构,找第几个最小数,说实在二叉查询数都已经排好序了,来个前序遍历就行了,当然得要记得数据结构就是。

输入案例:

Example 1:

Input: root = [3,1,4,null,2], k = 1
   3
  / \
 1   4
  \
   2
Output: 1
Example 2:

Input: root = [5,3,6,2,4,null,null,1], k = 3
       5
      / \
     3   6
    / \
   2   4
  /
 1
Output: 3

输入范围:

1、K一定在树节点数量范围内,不会说K超过树节点数。

2、二叉树节点不会少于1,不会大于10^4。

我的代码:

挺简单的,记住了什么是前序遍历和二叉查询树就好办。

class Solution {
    // 将K存到属性中
    int k;
    // 计算二叉树遍历索引
    int index;
    // 记录目标数据
    int target;
    public int kthSmallest(TreeNode root, int k) {
        this.k = k;
        recurtion(root);
        return target;
    }

    public void recurtion(TreeNode root) {
        // index == k表明已经找到了
        if(index < k) {
            // 先遍历左节点
            if(root.left != null) {
                recurtion(root.left);
            }
            
            // 左边完了判断一次是否第k个
            index ++;
            if(index == k) target = root.val;
            
            // 再遍历右键点
            if(root.right != null) {
                recurtion(root.right);
            }
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值