二叉查找树-学习

二叉树

二叉树(binary tree)是一棵树,其中每个节点都不能多于两个的儿子。
在这里插入图片描述

例子-表达式树

在这里插入图片描述
如图显示的就是一个表达式树的例子。
表达式树的树叶是操作数(如常数或变量名),而其他节点为操作符。
中序遍历(左、节点、右)[递归地产生一个左表达式,然后打印出在根处的运算符,最后再递归的产生一个带括号的右表达式而得到一个中缀表达式]:
(a+(b * c))+(((d*e)+f)*g)
后序遍历(在后序遍历中,一个节点的处理工作是在它的诸儿子节点被计算后进行的)[递归的打印出左子树、右子树、运算符]:
abc*+defg*+*+
先序遍历(在先序遍历中,对节点的处理工作是在它诸儿子节点被处理之前进行的)[先打印出运算符,然后递归的打印出左子树、右子树]:
++a*bc*+*defg

构造表达式树

1. 如果符号是操作数,那么建立一个单节点树并将它推入栈中
2. 如果符号是操作符,那么就从栈中弹出两颗树T1和T2(T1先弹出)并形成一颗新的树,该树的根就是操作符,它的左、右儿子分别是T2和T1
3. 将新树压入栈中

在这里插入图片描述
在这里插入图片描述

查找树ADT

使二叉树成为查找树的性质:对于树中的每个节点X,它的左子树中的所有的项的值小于X中的项,而它的右子树中所有项的值大于X中的项。

二叉查找树要求所有的项都能够排序。
在这里插入图片描述

contains方法

在这里插入图片描述

findMin和findMax方法

在这里插入图片描述

insert方法

在这里插入图片描述

remove 方法

  1. 如果节点是一片树叶,那么它可以被立即删除
  2. 如果节点有一个儿子,则该节点可以在其父节点调整自己的链以绕过该节点后删除
  3. 复杂情况是处理有两个儿子的节点。一般的删除策略是用其右子树的最小的数据代替该节点的数据并递归地删除那个节点。
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值