二叉树的几种运算方法

2016-02-19 13:12 5 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐二叉树的几种运算方法,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

1.二叉树的前序遍历
  先访问根结点,再访问左子树,最后访问右子树的次序访问二叉树中所有的结点,且每个结点仅访问一次.
  void preorder(BTree *p)
  {
      if(p!=NULL)
      {   printf("%d",p-data);
          preorder(p-left);
          preorder(p-right);
      }
  }2.二叉树的中序遍历
  先访问左子树,再访问根结点,最后访问右子树的次序访问二叉树的所有结点,且每个结点仅访问一次.
  void inorder(btree *p)
  {
      if(p!=NULL)
      {   inorder(p-left);
          printf("%d",p-data);
          inorder(p-right);
      }
  }3.后序遍历
  先访问左子树,再访问右子树,最后访问根结点的次序访问二叉树中所有的结点,且每个结点仅访问一次
  void postorder(btree *p)
  {
      if(p!=NULL)
      {   postorder(p-left);
          postorder(p-right);
          printf("%d",p-data);
      }
  }4.输出二叉树
  首先输出根结点,然后再输出它的左子树和右子树.依次输出的左,右子树要至少有一个不能为空.
  void print(btree *b)
  {
      if(b!=NULL)
      {   printf("%d",b-data);
          if(b-left!=NULLb-right!=NULL)
          {   printf("(");
              printf(b-left);
              if(b-right!=NULL)printf(",");
              printf(b-right);
              printf(")");
          }
      }
  }5.求二叉树的深度
  若一棵二叉树为空,则其深度为0,否则其深度等于左子树和右子树的最大深度加1,即有如下递归模型:
  depth(b)=0                                  /*假如b=NULL*/
  depth(b)=max(depth(b-left,b-right)+1      /*其它*/
  因此求二叉树深度的递归函数如下:
  int depth(btree *b)
  {
      int dep1,dep2;
      if(b==NULL)return(0);
      else
      {   dep1=depth(b-left);
          dep2=depth(b-right);
          if(dep1dep2)return(dep1+1);
          else return(dep2+1);
      }
  }
  
  

来源:http://www.tulaoshi.com/n/20160219/1603317.html

延伸阅读
树 因为现实世界中存在这“树”这种结构——族谱、等级制度、目录分类等等,而为了研究这类问题,必须能够将树储存,而如何储存将取决于所需要的操作。这里有个问题,是否答应存在空树。 !-- frame contents -- !-- /frame contents -- 有些书认为树都是非空的,因为树表示的是一种现实结构,而0不是自然数;我用过的...
才刚开了个头,就要说再见了——在树这里,除了二叉树,别的都还没有讲。为什么可以总结了呢?因为前面已经涉及到了树的两个基本用途,而假如再讲B+、B-,就不能不提到搜索,假如是胜者树就不能不提到排序。为此,把这部分放到后面。 !-- frame contents -- !-- /frame contents -- 我前面所做的努力,只是让你有个基本概念,什么...
clone模式在平衡排序二叉树实现中的应用 作者:wujinglong 下载本文示例源代码 clone模式既prototype模式,是构造模式中的一种。其意图为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 关键代码如下: virtual product * prototype::clone(){return new p...
一棵二叉查找树是按二叉树结构来组织的。这样的树可以用链表结构表示,其中每一个结点都是一个对象。结点中除了数据外,还包括域left,right和p,它们分别指向结点的左儿子、右儿子,如果结点不存在,则为NULL。 它或者是一棵空树;或者是具有下列性质的二叉树: 1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树...
本课主题: 实验七 查找 教学目的: 练习顺序查找、折半查找及二叉排序树的实现 教学重点: 教学难点: 授课内容: 顺序查找 折半查找 顺序查找及折半查找示例 二叉排序树 示例

经验教程

606

收藏

92
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部