数据结构_树
一、树的定义
(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语言数据结构_之_树
"数据结构——树结构.ppt"这份文件很显然是一个关于树结构的讲座或教程材料,它可能涵盖了树的基本概念、算法实现以及实际应用。 首先,我们要理解树的基本概念。树是一种非线性的数据结构,由若干个节点(或称为...
这里我们关注的是“BitTree_order_output_树_数据结构_”这一主题,它涉及到镜像对称树的判断问题。镜像对称树,顾名思义,是指一棵树经过水平翻转后与其原本的形态完全一致,这种特性在某些特定的算法中十分关键。 ...
8. 树:树是一种非线性的数据结构,由节点和边构成。节点可以包含数据和指向其他节点的引用。二叉树、平衡树(如AVL树和红黑树)以及搜索树(如B树)是常见的树形结构。 9. 图:图由顶点(节点)和边构成,表示对象...
在当今的算法竞赛和软件开发领域中,动态序列问题和动态树问题的解决方法是两类常见的数据结构应用场景。本文将从理论上和实践上探讨这些问题的解决之道,并详细介绍几种常用的平衡二叉树型数据结构,如线段树、伸展...
在给定的标题“BitTree_mirror_树_数据结构_mirror遍历_MirrorMirror_”中,主要涉及了两个关键概念:二叉树(Binary Tree)和镜像遍历(Mirror Traversal)。接下来,我们将深入探讨这两个知识点。 二叉树是一种...
3. **数据结构**:涵盖数组、链表、栈、队列、集合、映射、树(如二叉树、AVL树、红黑树)和图等。这些数据结构提供了不同的数据组织方式,适用于不同的问题场景。 4. **递归与分治策略**:递归是算法设计中的重要...
在众多的数据结构中,树是一种非常重要的抽象概念,它模拟了自然界中的层级关系,广泛应用于文件系统、数据库索引、编译器设计等多个领域。本教程主要探讨的是DS树(DSTree),一种特定类型的树数据结构。 DS树(DS...
这本书全面覆盖了线性结构、树形结构、图结构、动态存储分配、排序和查找等多种数据结构,并详细解释了它们的算法实现。 1. **线性结构**:线性结构是最基础的数据结构,包括数组和链表。数组是一种固定大小的连续...
对于"基于C++数据结构源码"的描述,我们可以期待这个代码库包含各种数据结构的具体实现,例如用C++类封装的数组、链表、树等。通过阅读和分析这些源码,可以加深对数据结构的理解,学习到实际编程中如何设计和实现...
一、实验目的 (1)理解动态查找表的动态生成过程; (2)任意给出一组数(不...(1)定义二叉排序树的数据结构; (2)实现二叉排序树的插入算法与查找算法,并建立二叉排序树; (3)进行数据查找和建树过程的比较。
树是一种非线性数据结构,例如二叉树、平衡树等,它们在搜索、排序等方面有广泛应用。图用于表示对象之间的关系,哈希表则提供快速查找功能。 学习C语言数据结构的关键在于理解每种数据结构的特性,以及如何在C语言...
首先,数据结构是编程和软件开发的基础,它涉及到了数组、链表、栈、队列、树、图等不同的结构类型。数组是最基本的数据结构,允许快速访问指定位置的元素,但插入和删除操作效率较低。链表则通过指针链接元素,便于...
在这个“Js数据结构_js数据结构_js实现算法_asleephi9_源码”的压缩包中,包含了用JS实现的各种数据结构和算法,这对于学习和提升JavaScript编程技能非常有帮助。 首先,我们来看看数据结构部分。数据结构是组织和...
在"BST.rar_bst_二叉搜索树_数据结构动画_树 动画"中,提供的内容很可能是通过动画的形式展示了二叉搜索树的运作过程,帮助学习者更直观地理解其内部机制。以下是关于二叉搜索树的一些关键知识点: 1. 插入操作:在...
树作为一种非线性数据结构,被广泛应用于各种算法和系统设计中。本话题主要关注树的一种特殊操作——镜像遍历,也称为“Mirror Mirror”遍历,它涉及到对树的节点进行翻转,以实现树的左右子树的互换。我们将深入...
2. **树形数据结构**:二叉树、二叉搜索树、平衡树(AVL树、红黑树)、堆(最大堆和最小堆)。二叉树是每个节点最多有两个子节点的树,二叉搜索树保证左子树的元素小于根节点,右子树的元素大于根节点,便于快速查找...
9. **B-树定义**:B-树是一种自平衡的树数据结构,广泛应用于数据库和文件系统中。对于一棵m阶的B-树,每个结点可以包含至多m个关键字。除了根结点外,所有非叶结点至少包含m/2个关键字。 ### 排序算法 10. **快速...
B-树和B+树的C语言实现(数据结构)。