二元搜索树的构建

     链表和数组比,优点是:新的元素可以被快速插入,旧的元素可以被快速移除,缺点是:想寻找某个值,必须遍历所有的项目;

而二叉树有利于快捷存取链接的元素,具有链表的灵活性,也具有已排序数组的优点,可以用二元搜索方法快速地找到所要的数据;  

     二叉树包含许多节点,每个节点都存储数据,它的结构特性如下:

          1,每个节点最多有两个直接的子节点;

          2,有一个没有父节点的节点,称为根,其它所有的节点都有一个父节点;

          3,二叉树的节点放置规则是节点的值大于或者等于左分支的值,小于右分支的值;

     二叉树的一个重要属性是它的高度,高度是从根到叶的最长路径的长度,路径是由相连节点所形成的链表。路径的长度就是路径中节点数目减去1。

    构造二叉树时,先要定义一个节点的结构类型,如:

        typedef   struct Node {

                               struct    Node *left,//指向左边的节点

                                        *right;//指向右边的节点

                              size_t   size;//数据的空间大小

                              char     data[];//数据本身

          }Node_t;

      另外提供两个辅助函数,一个用来得到对应于数据的键值,第二个用来比较两个键值

   然后定义一个结构类型,用来代表一个树,此结构有三个成员:指向树根的指针;

                                                                                       指向计算键值的指针;

                                                                                       指向比较函数的指针;

    然后使用相关的一些函数,用于遍历,插入,寻找,删除节点。

   

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值