zoukankan      html  css  js  c++  java
  • LeetCode 230. 二叉搜索树中第K小的元素

    230. 二叉搜索树中第K小的元素

    Difficulty: 中等

    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 **k **个最小的元素。

    说明:
    你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

    示例 1:

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

    示例 2:

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

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

    Solution

    Language: 全部题目

    涉及到二叉搜索树,一般会考到中序遍历,中序遍历把节点拿出来就简单了。这题还可以用二分查找解决?

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution:
        def kthSmallest(self, root: TreeNode, k: int) -> int:
            res = []
            self.dfs(root, res)
            return res[k-1]
    ​
        def dfs(self, root, res):
            if root:
                self.dfs(root.left, res)
                res.append(root.val)
                self.dfs(root.right, res)
    
  • 相关阅读:
    磁共振中的T1, T2 和 T2*的原理和区别
    Revolver Maps-3D地球仪网站定制
    4种常见网络
    De Moivre–Laplace theorem
    The Complex Inversion Formula. Bromwich contour.
    理解全概率公式与贝叶斯公式(转)
    滴滴数据
    ccs 分类
    dialog problem overview
    recommendation baselines
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14076082.html
Copyright © 2011-2022 走看看