一直对于二叉搜索树(又叫二叉排序树,也叫二叉查找树),没有很好的理解,决定花点时间来学习and总结。。
二叉搜索树也是二叉树的一种。(就像堆也就二叉树的一种一样。。。)
只不过,二叉搜索树也是有其他要求:对于所有的子树,其根节点的值大于左子树上的所有结点的值,而小于右子树上所有结点的值的值。。
对于错误的理解:对于所有的结点,要大于其左结点,小于其右结点。。(PS:这种理解是错误的,一定要注意。。)
还有一点需要注意的是:我们的大于和小于都应该是严格的。
========== 下面主要针对,其建立、增删改查这些操作来进行说明 ==============
====== 对于所有的数据结构,我们对其增删改查都应该有比较清楚的认识==========
首先我们定义一下二叉树的结构(链式结构):
<span style="font-size:18px;"><span style="font-size:18px;"># 结点的数据结构
typedef int ElementType;
typedef struct
{
ElementType Element;
ElementType *left;
ElementType *right;
}TreeNode;
# 有必要区别一下结点和树的区别。
具体来说的话:
结点的话,就是有数据+空间。
树的话,就是一个指向树的头结点的指针。
现在,我说给你你棵树,肯定就是给你一个指向头结点的指针。
</span></span>
MakeEmpty:
所