二叉排序树结点的插入与删除操作
二叉排序树结点的插入与删除操作 一 二叉排序树的性质 二叉排序树,又称二叉搜索树,它最重要的性质就是: 根结点左子树中所有结点的值均小于根结点值,右子树中所有结点的值都大于根结点的值 ,所以我们在中序遍历这棵二叉树时,将会得到一个升序序列,这也是我们验证二叉排序树的一个手段。 对应的数据结构定义为: typedef struct Node { //一个数据域和左右两个指针域 int data ; struct Node * lchild , * rchild ; } Node ; 二 二叉树结点的插入 首先将待插入结点的值与根结点的值作比较,若val == root->data,此时我们直接返回当前root指针,因为我们规定,二叉排序树中不存在值相同的结点。 若待插入结点的值小于根结点的值,此时我们应该进入根结点的左子树 若待插入结点的值大于根结点的值,此时我们应该进入根结点的右子树 若指针为空,此时我们根据传入的值创建结点,并返回创建的结点指针 Node * getNewNode ( int val ) { Node * node = ( Node * ) malloc ( sizeof ( Node ) ) ; node - > data = val ; node - > lchild = node - > rchild = NULL ; return node ; }