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

    1、题目描述

    给定一个二叉搜索树,编写一个函数 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 函数?

    2、题解

    2.1、解法一

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        
        def breadth_travel(self,root):
            """利用队列实现树的层次遍历"""
            ret = []
            if root == None:
                return ret
            queue = []
            queue.append(root)
    
            while queue:
                node = queue.pop(0)
                ret.append(node.val)
                if node.left != None:
                    queue.append(node.left)
                if node.right != None:
                    queue.append(node.right)
    
            return ret
        
        def kthSmallest(self, root, k):
            """
            :type root: TreeNode
            :type k: int
            :rtype: int
            """
            ret = self.breadth_travel(root)
            ret = [i for i in ret if i != None]
            if len(ret) == 0:
                return None
            ret.sort()
            return ret[k-1] 
    

      

  • 相关阅读:
    UI 简单练习(联动实例)
    软件工程与计算机科学
    中文编程
    自我介绍
    曾经的梦想
    即时通讯研究学习
    即时通讯研究学习
    创业
    2015-08-12-火影
    看<后海不是海>的随想
  • 原文地址:https://www.cnblogs.com/bad-robot/p/10066310.html
Copyright © 2011-2022 走看看