`
stinge
  • 浏览: 153357 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据结构_树

阅读更多

数据结构_树

 

一、树的定义

 

    (1)有且仅有一个根节点;

    (2)当结点个数大于1时,其余节点可分为互不相交的子树。 递归定义

 

   概念:

       结点的度 :节点拥有的子树数;

       叶子(终端)结点 :度为0的结点

       树的度 :树内各结点度的最大值

       孩子 :结点的子树的根,对应 双亲,兄弟,祖先,子孙,堂兄弟

       深度 :树中结点的最大层次

       有序树 :树中结点的各子树看成是从左到右是有次序的,不能互换。反之为无序树。

 

二、森林

    互不相交的树的集合。

 

三、二叉树

 

 树的度小于等于2的树

 

 满二叉树:除叶子节点外,其他结点的度都为2的二叉树。2^K-1个结点,k为深度

 

完全二叉树:对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点

 

 性质:

  (1) 在二叉树中,第i层的结点总数不超过2^(i-1);

  (2) 深度为h的二叉树最多有(2^h)-1个结点(h>=1),最少有h个结点;   

  (3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;   

  (4) 具有n个结点的完全二叉树的深度为int(log2n)+1   

  (5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:   

      若I为结点编号则 如果I<>1,则其父结点的编号为I/2;   

      如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子;   

      如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。  

  (6)给定N个节点,能构成h(N)种不同的二叉树。

 

  存储结构:

  1、顺序存储结构

        利用数组存储,结点在数组中的相对位置蕴含结点间的关系。如tree[i]的双亲为tree[n-1],n为(i+1)/2向下取整

        左孩子tree[2i+1]和tree[2i+2]

        适合完全二叉树,一般二叉树会造成空间的浪费。

 

   2、链式存储结构

       两种实现方式:

         (1)左孩子指针域,数据域,右孩子指针域

         (2)左孩子指针域,数据域,右孩子指针域,父节点指针域    便于找到结点双亲

 

   二叉树的遍历:

        先根序遍历、中根序遍历、后根序遍历

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    知识共享-数据结构_树(雷惊风).

    知识共享-数据结构_树(雷惊风-超精细).

    c语言数据结构_之_树

    c语言数据结构_之_树

    数据结构——树结构.ppt

    "数据结构——树结构.ppt"这份文件很显然是一个关于树结构的讲座或教程材料,它可能涵盖了树的基本概念、算法实现以及实际应用。 首先,我们要理解树的基本概念。树是一种非线性的数据结构,由若干个节点(或称为...

    BitTree_order_output_树_数据结构_

    这里我们关注的是“BitTree_order_output_树_数据结构_”这一主题,它涉及到镜像对称树的判断问题。镜像对称树,顾名思义,是指一棵树经过水平翻转后与其原本的形态完全一致,这种特性在某些特定的算法中十分关键。 ...

    数据结构(1)_链表_树_数据结构_4321_图_

    8. 树:树是一种非线性的数据结构,由节点和边构成。节点可以包含数据和指向其他节点的引用。二叉树、平衡树(如AVL树和红黑树)以及搜索树(如B树)是常见的树形结构。 9. 图:图由顶点(节点)和边构成,表示对象...

    动态序列与动态树问题——浅谈几种常用数据结构_莫凡.pdf

    "动态序列与动态树问题——浅谈几种常用数据结构" 本文主要讨论了动态序列问题和动态树问题的解决方法,通过介绍了几种常用的平衡二叉树型数据结构来解决这些问题。动态序列问题是指在一个序列上执行一系列在线操作...

    BitTree_mirror_树_数据结构_mirror遍历_MirrorMirror_

    在给定的标题“BitTree_mirror_树_数据结构_mirror遍历_MirrorMirror_”中,主要涉及了两个关键概念:二叉树(Binary Tree)和镜像遍历(Mirror Traversal)。接下来,我们将深入探讨这两个知识点。 二叉树是一种...

    算法与数据结构_张乃孝

    3. **数据结构**:涵盖数组、链表、栈、队列、集合、映射、树(如二叉树、AVL树、红黑树)和图等。这些数据结构提供了不同的数据组织方式,适用于不同的问题场景。 4. **递归与分治策略**:递归是算法设计中的重要...

    ds_tree.rar_DS-tree_DSTree_tree_数据结构_数据结构 树

    在众多的数据结构中,树是一种非常重要的抽象概念,它模拟了自然界中的层级关系,广泛应用于文件系统、数据库索引、编译器设计等多个领域。本教程主要探讨的是DS树(DSTree),一种特定类型的树数据结构。 DS树(DS...

    数据结构_数据结构_代码

    这本书全面覆盖了线性结构、树形结构、图结构、动态存储分配、排序和查找等多种数据结构,并详细解释了它们的算法实现。 1. **线性结构**:线性结构是最基础的数据结构,包括数组和链表。数组是一种固定大小的连续...

    数据结构_基于C++数据结构源码_数据结构_silent2pg_

    对于"基于C++数据结构源码"的描述,我们可以期待这个代码库包含各种数据结构的具体实现,例如用C++类封装的数组、链表、树等。通过阅读和分析这些源码,可以加深对数据结构的理解,学习到实际编程中如何设计和实现...

    数据结构___二叉排序树

    一、实验目的 (1)理解动态查找表的动态生成过程; (2)任意给出一组数(不...(1)定义二叉排序树的数据结构; (2)实现二叉排序树的插入算法与查找算法,并建立二叉排序树; (3)进行数据查找和建树过程的比较。

    专家讲述C语言数据结构.rar_c 数据结构_c语言数据结构_数据结构

    树是一种非线性数据结构,例如二叉树、平衡树等,它们在搜索、排序等方面有广泛应用。图用于表示对象之间的关系,哈希表则提供快速查找功能。 学习C语言数据结构的关键在于理解每种数据结构的特性,以及如何在C语言...

    数据结构_cshujujiegoupdf_数据开发_

    首先,数据结构是编程和软件开发的基础,它涉及到了数组、链表、栈、队列、树、图等不同的结构类型。数组是最基本的数据结构,允许快速访问指定位置的元素,但插入和删除操作效率较低。链表则通过指针链接元素,便于...

    Js数据结构_js数据结构_js实现算法_asleephi9_源码

    在这个“Js数据结构_js数据结构_js实现算法_asleephi9_源码”的压缩包中,包含了用JS实现的各种数据结构和算法,这对于学习和提升JavaScript编程技能非常有帮助。 首先,我们来看看数据结构部分。数据结构是组织和...

    BST.rar_bst_二叉搜索树_数据结构动画_树 动画

    在"BST.rar_bst_二叉搜索树_数据结构动画_树 动画"中,提供的内容很可能是通过动画的形式展示了二叉搜索树的运作过程,帮助学习者更直观地理解其内部机制。以下是关于二叉搜索树的一些关键知识点: 1. 插入操作:在...

    BitTree_mirror_树_数据结构_mirror遍历_MirrorMirror_源码.zip

    树作为一种非线性数据结构,被广泛应用于各种算法和系统设计中。本话题主要关注树的一种特殊操作——镜像遍历,也称为“Mirror Mirror”遍历,它涉及到对树的节点进行翻转,以实现树的左右子树的互换。我们将深入...

    2018级数据结构复习资料_settlersfme_数据结构_数据结构复习_

    2. **树形数据结构**:二叉树、二叉搜索树、平衡树(AVL树、红黑树)、堆(最大堆和最小堆)。二叉树是每个节点最多有两个子节点的树,二叉搜索树保证左子树的元素小于根节点,右子树的元素大于根节点,便于快速查找...

    杭电__数据结构_期末试卷

    9. **B-树定义**:B-树是一种自平衡的树数据结构,广泛应用于数据库和文件系统中。对于一棵m阶的B-树,每个结点可以包含至多m个关键字。除了根结点外,所有非叶结点至少包含m/2个关键字。 ### 排序算法 10. **快速...

Global site tag (gtag.js) - Google Analytics