数据结构--------树\二叉树\完全二叉树\堆

        

目录

1.  树的概念及其结构

        1.1 树的概念

 1.2 树的相关概念

1.3 树的结构

1.4 树在实际中是怎样运用的?(表示文件系统的目录树结构)

 2. 二叉树

2.1 二叉树的概念

 2.2 现实中的二叉树

 2.3 特殊的二叉树

 2.4 二叉树的性质

2.5 二叉树的存储结构

 3.二叉树的顺序结构和实现

3.1 二叉树的顺序结构

3.2 堆的概念和结构

 3.3 堆的实现

3.3.1 堆的向下调整算法

 3.3.2 堆的创建

3.3.3 建堆的时间复杂度

3.3.4 堆的插入

3.3.5 堆的删除 

 3.3.6 堆的代码实现

 3.4 堆的应用

3.4.1 堆排序

​编辑

 3.4.2 TOP-K问题

 4.二叉树链式结构的实现

4.1 二叉树的创建

4.2 二叉树的遍历

4.2.1 前序、中序、以及后序遍历


        在数据结构中,有线性的数据结构。比如耳熟能详的数组、链表等都是线性的数据结构。那有没有不是线性的呢?当然有,本文要介绍的就是数据结构中一种非线性的数据结构 ---  


1.  树的概念及其结构

        1.1 树的概念

        树是一种非线性的数据结构 ,它由n(n>=0)个有限节点组成一个有层次关系的集合。把它叫做树是因为它很想一颗倒挂的树,也就是说树的根朝上,而叶子朝下的。

        有一个特殊的节点,称为根节点,根节点没有前驱节点
        其余节点被分成M(M>0)个互不相交的集合T1,T2,T3.......TM-1,TM。其中每一个集合Ti(1<=i<=M)又是一颗结构与树类似的子树。每个子树有且只有一个前驱节点,可以有0个或多个后驱节点。
        因此树是递归定义的

 1.2 树的相关概念

节点的度:一个节点含有的子树个数称为该节点的度。         如上图,A的度为6。

叶节点或终端节点度为0的节点称为叶节点。          如上图,B,C,H,I,P,Q就是叶节点

非终端节点或者分支节点度不为0的节点。            如上图,D,E,J,F,G就是分支节点

双亲节点或父节点若一个节点含有子节点,那这个节点称为其子节点的父节点。      如上图:A是B的父节点

孩子节点或子节点一个节点含有的子树的根节点称为子节点。   如上图:B是A的子节点

兄弟节点具有相同父节点的节点称为兄弟节点。        如上图:P是Q的兄弟节点

树的度一棵树中最大的节点的度就是树的度。        如上图:树的度是6

节点的层次从根节点开始定义起,根为第一层,根的子节点为第二层,以此类推

节点的高度或深度树中节点的最大层次。         如上图:树的深度是4

堂兄弟节点:双亲在同一层的节点互为堂兄弟。      如上图:H和N是堂兄弟结点                

节点的祖先:从根到该节点所经分支的所有结点。        如上图:A是所有节点的祖先

子孙:以某节点为根的子树中的任意一个节点都被称为该节点的子孙         如上图:所有节点都是A的子孙

森林:由M棵(M>0)互不相交的树的集合叫做森林。

1.3 树的结构

树的结构相较线性表就复杂多了,要存储起来比较麻烦,既要保存值域,也要保存节点之间的关系。在实际运用中有很多表示法,比如双亲表示法,孩子表示法,孩子双亲表示法以及孩子兄弟表示法。最常用的是孩子兄弟表示法

//树的结构
typedef char BTDataType;
typedef struct TreeNode {
	BTDataType data;//节点中的数据域
	struct TreeNode* FirstChild;//指向该节点的第一个孩子节点
	struct TreeNode* pNextBrother;//指向其下一个兄弟节点
}TreeNode;

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值