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

简介: 日常生活中,很多事物都可以用树来描述,例如书的目录、工作单位的组织架构等等。树是计算机中非常重要的一种数据结构,树存储方式可以提高数据的存储、读取效率。正文比如二叉树中用来记录某个公司员工薪资和员工姓名数据,或者某班级学生们的排名和姓名数据。如何快速找出排名最高和最低的同学数据?

目录

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

前言

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

正文

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

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

image.png

1. min()方法

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

// 找出树中最小的键publickeymin() {
returnmin(root).key;
}

2. min(Node x)方法

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

// 找出树中最小键所在的结点publicNodemin(Nodex) {
if (x==null) {
returnx;
    }
NodeminNode=x;
while (minNode.left!=null) {
minNode=minNode.left;
    }
returnminNode;
}

3. max()方法

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

// 找出树中最小的键publickeymax() {
returnmax(root).key;
}

4. max(Node x)方法

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

// 找出树中最大键所在的结点publicNodemin(Nodex) {
if (x==null) {
returnx;
    }
NodemaxNode=x;
while (maxNode.right!=null) {
maxNode=maxNode.right;
    }
returnmaxNode;
}



作者简介:大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,同时也是CSDN博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!

目录
相关文章
|
11月前
|
算法 测试技术 C#
C++二分查找算法的应用:长度递增组的最大数目
C++二分查找算法的应用:长度递增组的最大数目
|
17天前
查找数组中最小的元素
【10月更文挑战第30天】查找数组中最小的元素。
31 5
|
6月前
|
算法 测试技术 C#
【位运算 试填法】【推荐】3022. 给定操作次数内使剩余元素的或值最小
【位运算 试填法】【推荐】3022. 给定操作次数内使剩余元素的或值最小
|
6月前
|
算法 测试技术 C#
【哈希映射】【 哈希集合】 381. O(1) 时间插入、删除和获取随机元素 - 允许重复
【哈希映射】【 哈希集合】 381. O(1) 时间插入、删除和获取随机元素 - 允许重复
|
6月前
|
前端开发 数据库
两个map中的数据,按照相同键,将所对应的值相加方法
两个map中的数据,按照相同键,将所对应的值相加方法
|
6月前
|
人工智能
输入一个数,将它插入数组中
输入一个数,要求按原来的规律将它插入数组中。
79 2
1240:查找最接近的元素 2020-12-27
1240:查找最接近的元素 2020-12-27
|
存储 搜索推荐
Map根据键、值进行排序
在参加农行软开笔试时,最后一道编程题需要将Map中的数据按照值排序··· ···
给定一个字符串,能否最多删除一段连续的一段使得剩下的为“2020”
给定一个字符串,能否最多删除一段连续的一段使得剩下的为“2020”
84 0
|
C++ 索引
LeetCode 2057. 值相等的最小索引
LeetCode 2057. 值相等的最小索引
129 0