版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_30650153/article/details/81782927
1、查找二叉树的定义
先上图:
一棵二叉搜索树(Binary Sort Tree)是以一棵二叉树来组织的,可以用链表数据结构来表示,其中,每一个结点就是一个对象,一般地,包含数据值和指向孩子(也可能是父母)的指针
。如果某个孩子结点不存在,其指针为空(NULL
)。
- 查找树的左右子树各是一棵查找树
- 若查找树的左子树非空,则其左子树上的各节点值均小于根节点的值。
- 若查找树的右子树非空,则其右子树上的各节点值均大于根节点的值。
2、查找树的基本操作
- 查找
- 插入节点
- 删除节点
2.1 查找
二叉搜索树很多时候用来进行数据查找。这个过程从树的根结点开始,沿着一条简单路径一直向下,直到找到数据或者无法找到返回NULL
值。从图中可以看出,在查找二叉树中查找很容易,比大小就可以,小就向左找,大就向右找。
例如说,查找12。
步骤:
- 12<16,向左找,与9去比较
- 12>9,向右找,与12去比较
- 12=12,找到了
2.2 插入
在查找树中插入一个节点需要分情况:
- 如果相同键值的节点已经存在,则不再插入
- 如果查找树为空,则已新节点为查找树
- 将要插入节点的键值与插入后的父节点的键值比较,就能确定新节点是父节点的左子节点,还是右子节点。
2.3 删除
在查找树中删除一个节点需要分情况:
- 若待删除的节点是叶子节点,则直接删除该节点
- 若待删除的节点只有一个子节点,则将待删除节点父节点与其子节点直接相连,然后删除该节点
- 若待删除的节点有两个子节点,则在其左子树上,用中序遍历寻找值最大节点s,用节点s的值代替该节点的值,然后删除节点s,且节点s必属上述两种情况之一
例题1:
利用逐点插入法建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,查找元素30要进行__次元素间的比较
A. 4
B. 5
C. 6
D. 7
插入是指把每个节点都看成查找树,因此可以画出:
例题2:
在常用的描述二叉排序树的存储结构中,关键字值最大的节点__。
A. 左指针一定为空
B. 右指针一定为空
C. 左、右指针均为空
D. 左右指针均不为空