数据结构第四章(二叉搜索树的定义以及删除操作的实现)

 

查找问题:1.静态查找和动态查找。2.针对动态查找,数据应该如何组织?

 

 

什么是二叉搜索树(二叉搜索树也称二叉排序树或二叉查找树)?

二叉搜索树:一棵二叉树,可以为空,如果不为空,满足以下性质

          1.非空左子树的键值小于其根节点的键值

          2.非空右子树~~~~大于~~~~~~~~~~

          3.左右子树都是二叉搜索树

 

尾递归:在要返回结果的时候进行递归

从编译的角度看,尾递归都可以用循环来实现

 

查找的效率取决于树的高度

 

二叉树的删除:

有三种情况:

1.要删除的是叶节点:直接删除,并再修改其父结点指针---置为NULL

2.要删除的结点只有一个孩子的结点(将其父结点的指针指向要删除结点的孩子结点)

3.要删除的结点有左右两棵子树:用另一结点替代被删除结点:右子树的最小元素或者左子树的最大元素。(1)取右子树中的最小元素替代 (2)取左子树的最大元素替代

用另一结点替代被删除结点的好处:没有孩子,容易删除

猜你喜欢

转载自blog.csdn.net/a13683857889/article/details/86835147
今日推荐