图书管理系统插入删除c语言_C语言:数据结构-二叉排序树的插入和删除

二叉排序树是一种有重要应用意义的数据类型,在二叉排序树上能有效地进行查找操作。同时采用适当算法,根据一组关键字值可以方便地建立与之相应的二叉排序树。按照一定规则在二叉排序树上插入、删除结点仍能保持二叉排序树的性质。

(1)二叉排序树的插入操作

如何建立一棵二叉排序树以及如何在二叉排序树中插入一个新结点呢,实际上,只要解决了插入问题,建树过程就是从空树开始逐次插入新结点的操作,需要注意的是插入一个结点后的二叉树仍然为一棵二叉排序树。

具体做法是:动态生成一个新结点,若二叉排序树为空,则结点作为根结点插入;若非空,则用新结点的关键字值与根结点的关键字比较,若小于根结点的关键字值,新结点应插入左子树,否则,应插入右子树。在左子树或右子树上进行同样的操作,实际上这是一个递归过程。最后新结点的插入位置是二叉排序树中某结点的空指针位置。新结点是作为二叉排序树的叶结点插入,所以新结点插入时它的左、右指针均为空指针。

二叉排序树中插入新结点的非递归算法

#include #include #define MAX 5#define NULL 0Bnode * btInsert(int x, Bnode *root); void main(){ int i; int a[MAX]={60, 40, 70, 20, 80}; Bnode * root=NULL;  for(i=0;ikey=x ; /*为新结点关键字赋值*/ p->right=p->left=NULL; /*新结点要作为叶结点插入*/ if(root==NULL) { root=p; return p; } q=root; 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值