数据结构与算法学习笔记:二叉搜索树(上)


目录

二叉搜索树的引入

二叉搜索树(Binary Search Tree)

BST 接口设计

节点

判断不能为空

根节点

添加根节点

添加节点

找到父节点

创建新节点,添加

定义比较接口,元素必须实现接口

改善比较方式,创建比较器

兼容以上两种比较方法

或者使用匿名类

打印BST

推荐几个网站

值相等处理(覆盖原节点)


二叉搜索树的引入

二叉搜索树(Binary Search Tree)

BST 接口设计

节点

判断不能为空

根节点

添加根节点

添加节点

找到父节点

创建新节点,添加

定义比较接口,元素必须实现接口

  • 某种类型元素进行实现

  • BST中调用

 

  • 如果换一种需求,如下方式,年龄小的认为在二叉树中为大的节点

  • 上面把比较判定放在Person里,写死了,没法满足更加灵活的需求

改善比较方式,创建比较器

  • 创建比较器接口

  • 在BST构造函数中调用

  • 根据需求创建具体的比较器

  • 调用创建的比较器

兼容以上两种比较方法

  • 添加不需要比较器的构造函数

  • 在类中实现,使用官方的Compareable

  • 使用官方的Comparator实现自定义比较器

  • 使用自定义的比较器和类中默认提供的

或者使用匿名类

打印BST

  • 实现下面接口
public interface BinaryTreeInfo {
	/**
	 * who is the root node
	 */
	Object root();
	/**
	 * how to get the left child of the node
	 */
	Object left(Object node);
	/**
	 * how to get the right child of the node
	 */
	Object right(Object node);
	/**
	 * how to print the node
	 */
	Object string(Object node);
}

  • 测试1,调用类提供的比较逻辑

  • 测试2,传入比较器

  • 测试3,随机数

  • 重写toString打印Parent

推荐几个网站

http://520it.com/binarytrees/

http://btv.melezinek.cz/binary-search-tree.html

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

https://yangez.github.io/btree-js/

https://www.codelike.in/

值相等处理(覆盖原节点)

  • 重写Person类toString

  • 测试

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值