数据结构-二分搜索树

2020-04-08  本文已影响0人  羽裳有涯

二分搜索树

二分搜索树的每个节点的值:

一般二分搜索树不包含重复元素, 当然也可以定义包含重复元素的二分搜索树

二分搜索树天然的具有递归特性

下面是二分搜索树的几个样例 ?*


image.png image.png

在进行相关操作之前, 先定义一个支持泛型的节点类, 用于存储二分搜索树每个节点的信息, 这个类作为二分搜索树的一个内部类, 二分搜索树的类声明以及Node节点类声明如下:

添加元素

由于二分搜索树本身的递归特性, 所以可以很方便的使用递归实现向二分搜索树中添加元素, 步骤如下:

查找元素

由于二分搜索树没有下标, 所以针对二分搜索树的查找操作, 这里定义一个contains方法, 查看二分搜索树是否包含某个元素, 返回一个布尔型变量, 这个查找的操作一样是一个递归的过程, 具体代码实现如下:

遍历操作

深度优先遍历 :

  • 前序遍历 : 对当前节点的遍历在对左右孩子节点的遍历之前, 遍历顺序 : 当前节点->左孩子->右孩子
  • 中序遍历 : 对当前节点的遍历在对左右孩子节点的遍历中间, 遍历顺序 : 左孩子->当前节点->右孩子
  • 后序遍历 : 对当前节点的遍历在对左右孩子节点的遍历之后, 遍历顺序 : 左孩子->右孩子->当前节点
    广度优先遍历 :
  • 层序遍历 : 按层从左到右进行遍历

前序遍历

这里一样使用递归来实现遍历, 对于一颗二分搜索树进行遍历, 如果要使用非递归方式实现的话, 可以使用一个栈来赋值进行遍历, 代码如下:

上一篇 下一篇

猜你喜欢

热点阅读