查找二叉树中最小和最大的键(三)

314 阅读2分钟

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

目录

  • 前言
  • 正文
      1. min()方法
      1. min(Node x)方法
      1. max()方法
      1. max(Node x)方法

前言

日常生活中,很多事物都可以用树来描述,例如书的目录、工作单位的组织架构等等。树是计算机中非常重要的一种数据结构,树存储方式可以提高数据的存储、读取效率。

正文

比如二叉树中用来记录某个公司员工薪资和员工姓名数据,或者某班级学生们的排名和姓名数据。如何快速找出排名最高和最低的同学数据?

这样的话,该怎么做呢?其实,一般还可以整理出如下四个方法,定义如下:

image.png

1. min()方法

min()方法和上面提到的 get()和 put()方法类似,也可以使用下面的重载方法实现,具体代码如下:


// 找出树中最小的键
 
public key min() {
 
    return min(root).key;
 
}

2. min(Node x)方法

min(Node x)方法需要根据传入的结点位置,查找左子树中的最小的结点,如果为空,则直接返回空,具体代码实现如下:

// 找出树中最小键所在的结点
 
public Node min(Node x) {
 
    if (x == null) {
 
        return x;
 
    }
 
    Node minNode = x;
 
    while (minNode.left != null) {
 
        minNode = minNode.left;
 
    }
 
    return minNode;
 
}

3. max()方法

max()方法和上面提到的 min()方法类似,也可以使用下面的重载方法实现,具体代码如下:

// 找出树中最小的键
 
public key max() {
 
    return max(root).key;
 
}

4. max(Node x)方法

max(Node x)方法需要根据传入的结点位置,查找右子树中的最大的结点,如果为空,则直接返回空,具体代码实现如下:

// 找出树中最大键所在的结点
 
public Node min(Node x) {
 
    if (x == null) {
 
        return x;
 
    }
 
    Node maxNode = x;
 
    while (maxNode.right != null) {
 
        maxNode = maxNode.right;
 
    }
 
    return maxNode;
 
}