记录算法笔记(2025.5.19)二叉搜索树中第k小的元素

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

示例 1:

记录算法笔记(2025.5.19)二叉搜索树中第k小的元素_第1张图片

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

输出:1

示例 2:

记录算法笔记(2025.5.19)二叉搜索树中第k小的元素_第2张图片

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

输出:3

提示:

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

思路:中序遍历这个二叉搜索树,将每个节点的值存入列表中,然后返回列表中第k小的元素

代码:C#

public class Solution {

    List list=new List();

    public int KthSmallest(TreeNode root, int k) {

        //遍历二叉搜索树都存入数组中,然后再取出第k小的元素

        digui(root);

        list.Sort();//因为二叉搜索树本身是中序遍历后就是一个递增序列,所以这句按大小排序没必要

        return list[k-1];

     }

     private void digui(TreeNode node)

     {

        if(node==null)

        return ;

        digui(node.left);

         list.Add(node.val);

        digui(node.right);

     }

}

你可能感兴趣的:(算法,笔记,java)