网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C语言中二叉查找树怎么实现

本文小编为大家详细介绍“C语言中二叉查找树怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中二叉查找树怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供网站制作、成都网站建设、网站策划、网页设计、域名与空间、虚拟主机、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。

二叉查找树性质

1、二叉树

每个树的节点最多有两个子节点的树叫做二叉树。

C语言中二叉查找树怎么实现

2、二叉查找树

一颗二叉查找树是按照二叉树的结构来组织的,并且满足一下性质:

一个节点所有左子树上的节点不大于盖节点,所有右子树的节点不小于该节点。

对查找树的操作查询,插入,删除等操作的时间复杂度和树的高度成正比, 因此,构建高效的查找树尤为重要。

查找树的遍历

先序遍历

查找树的遍历可以很简单的采用递归的方法来实现。

struct list
{
  struct list *left;//左子树
  struct list *right;//右子树
  int a;//结点的值
};
void preorder(struct list *t)//t为根节点的指针
{
  if(t!=NULL)
  {
    printf("%d,",t->a);
    preorder(t->left);
    perorder(t->right);
  }
}

中序遍历

struct list
{
  struct list *left;//左子树
  struct list *right;//右子树
  int a;//结点的值
};
void preorder(struct list *t)//t为根节点的指针
{
  if(t!=NULL)
  {
    preorder(t->left);
    printf("%d,",t->a);
    perorder(t->right);
  }
}

后序遍历

struct list
{
  struct list *left;//左子树
  struct list *right;//右子树
  int a;//结点的值
};
void preorder(struct list *t)//t为根节点的指针
{
  if(t!=NULL)
  {
    preorder(t->left);
    perorder(t->right);
    printf("%d,",t->a);
  }
}

查找树的搜索

给定关键字k,进行搜索,返回结点的指针。

struct list
{
  struct list *left;//左子树
  struct list *right;//右子树
  int a;//结点的值
};
struct list * search(struct list *t,int k)
{
  if(t==NULL||t->a==k)
    return t;
  if(t->aright);
  else
    search(t>left);
};

也可以用非递归的形式进行查找

struct list
{
  struct list *left;//左子树
  struct list *right;//右子树
  int a;//结点的值
};
struct list * search(struct list *t,int k)
{
  while(true)
  {
    if(t==NULL||t->a==k)
    {
      return t;
      break;
    }
    if(t->arigth;
    else
      t=t->left;

  }
};

最大值和最小值查询

根据查找树的性质,最小值在最左边的结点,最大值的最右边的 结点,因此,可以直接找到。

下面是最大值的例子:

{
  struct list *left;//左子树
  struct list *right;//右子树
  int a;//结点的值
};
struct lsit *max_tree(struct lsit *t)
{
  while(t!=NULL)
  {
    t=t->right;
  }
  return t;
};

查找树的插入和删除

插入和删除不能破坏查找树的性质,因此只需要根据性质,在树中找到相应的位置就可以进行插入和删除操作。

struct list
{
  struct list *left;//左子树
  struct list *right;//右子树
  int a;//结点的值
};
void insert(struct list *root,struct list * k)
{
  struct list *y,*x;
  x=root;
  while(x!=NULL)
  {
    y=x;
    if(k->aa)
    {
      x=x->left;
    }
    else
      x=x->right;
  }
  if(y==NULL)
    root=k;
  else if(k->aa)
    y->left=k;
  else
    y->right=k;

}

读到这里,这篇“C语言中二叉查找树怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。


文章名称:C语言中二叉查找树怎么实现
URL分享:http://bjjierui.cn/article/jchiih.html

其他资讯