[Leetcode]18.二叉搜索树的第k大节点(内部声明函数)

给定一棵二叉搜索树,请找出其中第k大的节点。

 

示例 1:

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

示例 2:

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

 

思想:中序遍历,先遍历右边,再遍历左边,遍历到的数存储在切片中,返回第k-1个数即为目标数。

func kthLargest(root *TreeNode, k int) int {
    count := make([]int,0)
    var  dfs func(root *TreeNode)
    dfs = func(root *TreeNode){
        if root.Right!=nil{
            dfs(root.Right)
        }
        if root != nil{
            count = append(count,root.Val)
        }
       if root.Left!=nil{
            dfs(root.Left)
       }
    }
    dfs(root)
    return count[k-1]
}

 

题目来源:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof

posted @ 2021-10-28 14:52  梦想是能睡八小时的猪  阅读(31)  评论(0)    收藏  举报