LeetCode面试题54. 二叉搜索树的第k大节点

题目

解答

方案一

class Solution {
   
    private List<TreeNode> nodes = new LinkedList<>();

    public void inorder(TreeNode node) {
   
        if (node == null) {
   
            return;
        }

        inorder(node.right);
        nodes.add(node);
        inorder(node.left);
    }

    public int kthLargest(TreeNode root, int k) {
   
        inorder(root);
        if (k > nodes.size()) {
   
            return 0;
        }

        return nodes.get(nodes.size() - k).val;
    }
}

方案二

class Solution {
   
    private List<TreeNode> nodes = new LinkedList<>();

    public void inorder(TreeNode node) {
   
        if (node == null) {
   
            return;
        }

        inorder(node.right);
        nodes.add(node);
        inorder(node.left);
    }

    public int kthLargest(TreeNode root, int k) {
   
        inorder(root);
        if (k > nodes.size()) {
   
            return 0;
        }

        return nodes.get(k - 1).val;
    }
}

要点

使用中序遍历,完成树节点各元素的排序,然后按照题目要求提取第K大的元素。
方案一和方案二没有本质的区别。

最近更新

  1. TCP协议是安全的吗?

    2024-02-14 19:38:03       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-14 19:38:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-14 19:38:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-14 19:38:03       18 阅读

热门阅读

  1. mysql全国省市县三级联动创表sql(一)

    2024-02-14 19:38:03       39 阅读
  2. 机器视觉技术:提升安全与效率的关键

    2024-02-14 19:38:03       40 阅读
  3. Python爬虫:安全与会话管理

    2024-02-14 19:38:03       42 阅读
  4. Oracle数据库

    2024-02-14 19:38:03       30 阅读
  5. 深入解析MySQL 8:事务数据字典的变革

    2024-02-14 19:38:03       30 阅读
  6. 2.12作业

    2024-02-14 19:38:03       26 阅读
  7. 计算机如何搭建存储服务器

    2024-02-14 19:38:03       29 阅读