二叉查找树(binary search tree)
顾名思义二叉查找树中每个节点至多有两个子节点,并且还对存储于每个节点中的关键字值有个小小的要求,
即只要这个节点有左节点或右节点,那么其关键字值总的
大于其左节点的关键字值,
小于其右节点的关键字值,如下图:
因为树的结构特性,很适合使用递归的方式去操作,下面的实现中均是以递归的方式实现:
下面仅给出了python的实现,一是因为代码太长,二是python的实现是我对着C语言实现改过来的,基本没什么差别;
主要实现的方法有:
- 遍历:
前序:preorder()——理根节点→处理左子树→处理右子树
中序:inorder()——处理左子树→处理根节点→处理右子树
后序:postorder()——处理左子树→处理右子树→处理根节点
- 插入:
insert(key)——将关键字值为key的节点插入到适当的位置(注释里面的是非递归实现)
- 删除:
delete(key)——将关键字值为key的节点从树中删掉(注释中给了说明)
</