`
Mr.Zero
  • 浏览: 33445 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

树与二叉树

 
阅读更多
一、树
树是n(n>=0)个结点的有限集合。如果n=0则称为空树;如果n>0,那么有且仅有一个根结点。树是非线性的结构。

与树相关的基本概念:
1)结点:一个数据元素及指向其子树的分支;
2)结点的度:结点拥有的子树个数;
3)树的度:树中结点的度的最大值;
4)叶结点:度为0的树;
5)子女:结点子树的根;
6)父亲:与子女结点直接联系的子女的上层;
7)兄弟:同一结点的子女;
8)堂兄弟:同层,但为不同结点的子女;
9)结点层次:从根开始,根为第一层,根的子女为第二层,以此类推;
10)树的深度:书中结点的最大层数
11)森林:m(m>=0)棵互不相交的树。

二、二叉树
一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两个分别称为左子树和右子树的互不相交的二叉树组成。

特点:每个结点之多只有两棵子树。

性质:
1、二叉树的第i层上至多有2的n-1次方个结点(n>=1)
2、深度为k的二叉树至多有2的k次方-1个检点(k>=1)
3、二叉树中,度为0的结点比度为2的结点个数多1

满二叉树——一棵深度为k且有2的k次方-1个结点的二叉树。

完全二叉树——若二叉树的高度为h,除第h层外,其他各层的结点数都达到最大个数,第i层从右往左连续缺若干结点。

遍历二叉树:
1、前序遍历
        先访问跟结点,然后遍历左子树,再遍历右子树。在遍历左子树和右子树的时候,同样先遍历它的根几点再依次遍历左右子树。
void PreOrder(BTreeNode root){
       if(root!=null){
               Visit(root.data);
               PreOrder(root.lChild);
               PreOrder(root.rChild);
       }
}

2、中序遍历
        先遍历左子树,然后访问根结点,再遍历右子树。在遍历左右子树的时候,同样先遍历它们的左子树再访问根结点再遍历右子树。
void InOrder(BTreeNode root){
       if(root!=null){
                InOrder(root.lChild);
                Visit(root.data);
                InOrder(root.rChild);
       }
}

3、后序遍历
        先遍历左子树,然后遍历右子树,再访问根结点。在遍历左右子树的时候,同样先遍历它们的左子树再访问根结点,然后遍历右子树。
void PostOrder(BTreeNode root){
       if(root!=null){
                PostOrder(root.lChild);
                PostOrder(root.rChild);
                Visit(root.data);
       }
}
由此可知,到底是前序还是中序、后序遍历,是指根结点的遍历次序。


树的遍历:
1、按层次遍历:
        若树不空,则自上而下、自左至右访问树中每个结点。
2、深度优先遍历
(1)先根次序遍历:
     当树非空时,访问跟结点,再依次先根遍历根的各子树。
(2)后根次序遍历:
      当树非空时,依次后根遍历分的各子树,在访问根结点。
3、按对应二叉树遍历:
   先将普通书转换为对应的二叉树,再按二叉树的前序、中序、后序遍历方式访问各结点。

树:先根次序遍历 ====对应====> 二叉树:前序遍历
树:后根次序遍历 ====对应====> 二叉树:中序遍历
分享到:
评论

相关推荐

    树与二叉树的转换

    简单的实现了树与二叉树的转换功能!很实用

    树与二叉树_习题

    树与二叉树_习题树与二叉树_习题树与二叉树_习题

    树与二叉树相互转化 树的遍历 源代码

    树与二叉树相互转化 树的前根遍历和后根遍历 源代码

    树与二叉树算法总结

    树与二叉树的详细算法,很全 以二叉树表示算术表达式 建立二叉树算法 以及一些习题

    课程设计 二叉树的遍历及树与二叉树的转换

    课程设计 二叉树的遍历及树与二叉树的转换 报告并能按照树的形式打印出来。

    树与二叉树PPT

    很好的一个课件,详细,基础的讲述了数据结构中最难理解的部分,帮助理解树与二叉树。。

    数据结构课程设计,树与二叉树的转换,C++

    数据结构课程设计,树与二叉树的转换,C++,用双亲表示孩子数,双亲表示法

    数据结构树与二叉树数据结构树与二叉树

    数据结构树与二叉树数据结构树与二叉树数据结构树与二叉树

    树与二叉树详细整理.ppt

    "树与二叉树详细整理" 树是一种非线性数据结构,主要用于描述带有层次关系的数据集。树的形式化定义是:树是由一个或多个结点组成的有限集合,其中有一个特定的称为根的结点;其余结点可分为m(m≥0)个互不相交的...

    数据结构java树与二叉树PPT课件.pptx

    "数据结构java树与二叉树PPT课件.pptx" 本资源是关于数据结构中的树和二叉树的PPT课件,共51页。该资源对树和二叉树的定义、基本术语、类型、遍历方法等进行了详细的介绍。 树的定义: 树是由n(n≥0)个有限数据...

    数据结构 第6讲 树与二叉树课件

    树与二叉树的课件,数据结构(C++)版,讲的很详细

    数据结构树与二叉树算法汇总

    数据结构树与二叉树算法汇总 适合需要面试的同志们快速浏览

    数据结构与算法树与二叉树

    数据结构与算法树与二叉树 树是一种非线性数据结构,常用于存储和管理大量数据。它由节点和边组成,每个节点都包含一个值和一个或多个子节点的指针。树的基本信息包括定义、基本术语、森林与树的关系、树结构与线性...

    数据结构实验四-树与二叉树.doc

    数据结构实验四-树与二叉树 一、树与二叉树的基本概念 树是一种非线性数据结构,由节点和边组成,节点之间通过边连接。树的每个节点都有一个值,并且可以有零个或多个子节点。二叉树是树的一种特殊类型,每个节点...

    c++数据结构树与二叉树课件

    树与二叉树讲课课件,对树的知识点进行了详细的讲解。

    树与二叉树答案说明.doc

    树与二叉树答案说明 本文档详细介绍了树和二叉树的概念、数据结构和基本操作。包括树的类型定义、创建、销毁、遍历、求树深、求结点数、叶结点数、复制、左右互换、查找、定位双亲、删除等操作的实现。 树的类型...

    树与二叉树PPT学习教案.pptx

    "树与二叉树PPT学习教案.pptx" 这份PPT学习教案主要讲解了树和二叉树的定义、类型、基本操作等相关知识点。下面我们将逐一详细解释每个知识点: 一、树的定义 树是一种数据结构,它是n(n≥0)个元素的有限集合。...

    数据结构java树与二叉树PPT学习教案.pptx

    "数据结构java树与二叉树PPT学习教案" 本资源是关于数据结构java树与二叉树的PPT学习教案,涵盖了树和二叉树的基本概念、术语、特性和操作。 一、树的定义和基本术语 树(tree)是由n(n≥0)个有限数据元素组成的...

    第五章 树与二叉树

    (2)选取与合并:在F中选取根结点的权值最小的两棵二叉树分别作为左、右子树构造一棵新的二叉树,这棵新的二叉树的根结点的权值为其左右子树根结点的权值之和。 (3)删除与加入:在F中删除作为左、右子树的两棵...

    软件技术基础:树与二叉树.ppt

    "软件技术基础:树与二叉树" 树是以分支关系来定义的层次结构,在客观世界中树形结构广泛存在,并应用于人类社会的族谱、家谱、行政区域划分管理、各种社会组织机构、计算机领域中用树表示源程序的语法结构、在 OS ...

Global site tag (gtag.js) - Google Analytics