数据结构中树的一些基本概念

前言:带你认识二叉树从基本概念开始,步步深入。

目录

树的概念和其中比较重要的基本概念

对概念的深度解析:

树的结构应该如何实现呢?

树的分类:

完全二叉树与满二叉树:


树的概念和其中比较重要的基本概念

资源来源于:树(数据结构名词)_百度百科 (baidu.com)

定义:

树:树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

空树:空集合也是树,称为空树。空树中没有节点

孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;

节点的度:一个节点含有的子节点的个数称为该节点的度;

叶节点或终端节点为0的节点称为叶节点;

非终端节点或分支节点:不为0的节点;

双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;

兄弟节点:具有相同父节点的节点互称为兄弟节点;

树的:一棵树中,最大的节点的度称为树的度;

节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

树的高度或深度树中节点的最大层次

堂兄弟节点:双亲在同一层的节点互为堂兄弟

节点的祖先:从根到该节点所经分支上的所有节点;

子孙:以某节点为根的子树中任一节点都称为该节点的子孙

森林:由(m>=0)棵互不相交的树的集合称为森林。


对概念的深度解析:

1,任何一棵树都可以看成 根+N棵子树

图解:

2,树的高度或深度

树的层次的两种定义方式,根的那一层为0或为1

综上,更建议,只是建议用第一种定义方式 

3.树与非树

树:子树是不想交的

非树:子树是相交的

比如,


树的结构应该如何实现呢?

左孩子右兄弟:

typedef int DataType;
struct Node
{
 struct Node* firstChild1; // 第一个孩子结点
 struct Node* pNextBrother; // 指向其下一个兄弟结点
 DataType data; // 结点中的数据域
};


树的分类:

二叉树每个节点最多含有两个子树的树称为二叉树;

满二叉树:叶节点除外的所有节点均含有两个子树的树被称为满二叉树;

完全二叉树:除最后一层外,所有层都是满节点,且最后一层缺右边连续节点的二叉树称为完全二叉树;

满二叉树的一些结论:

n:节点的个数

h:树的高度

节点的个数:n = 2^h-1 

树的高度:  h = log2(n+1)

推理: 从第1层的节点个数开始一直加到第n层

2^0+2^1+……+2^(h-1) = 2^h-1

完全二叉树与满二叉树:

满二叉树和完全二叉树适合用数组存储:

因为即使用数组存储也可以通过数组的下标区分出不同元素间的父子关系。

如下图:有以下三个关系可以确定父子关系

leftchild = 2 * parent+1;(左孩子的下标等于父节点下标乘2加1)

rightchild = 2* parent +2;(右孩子的下标等于父节点下标乘2加2)

parent = (child-1)/2;(父亲节点的下标等于任意孩子节点的下标减1除2)

注意:下一篇博客会介绍堆,堆的逻辑结构就是 满二叉树和完全二叉树,通过堆还能实现堆排序。

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数据结构是一种将数据组织起来的结构,它可以用来更有效地存储和管理数据,以满足特定的任务需求。基本概念包括:数据项,数据元素和数据结构。数据项是数据集的一个单独的项,数据元素是一个或多个数据项的组合,而数据结构则是在数据元素之上构建的一种更高级的结构。 ### 回答2: 数据结构是计算机科学的基础,它主要用于组织和存储数据,以便有效地操作和管理。以下是一些数据结构基本概念的例子: 1. 数组:数组是一种线性数据结构,它可以存储相同类型的元素。通过索引(下标)可以访问数组的元素。例如,一个整数数组可以存储一组整数,并通过索引访问其的值。 2. 链表:链表是另一种线性数据结构,其的元素以节点的形式存储,并且每个节点都包含一个指针指向下一个节点。链表可以动态地添加和删除元素,不需要预先分配内存空间。例如,一个链表可以存储一组学生的信息,每个节点表示一个学生。 3. 栈:栈是一种后进先出(LIFO)的数据结构,其元素的插入和删除只能在栈的顶部进行。例如,一个浏览器通过使用栈来记录用户的访问历史,最后访问的网页在栈的顶部。 4. 队列:队列是一种先进先出(FIFO)的数据结构,其元素的插入是在队列的尾部进行,而删除是在队列的头部进行。例如,一个电影院的售票系统可以使用队列来管理顾客的排队顺序。 5. 是一种非线性的数据结构,它由节点和边组成。每个节点可以有多个子节点,而没有父节点的节点被称为根节点。例如,一个公司的组织结构可以使用来表示,每个节点代表一个员工,父子关系代表上下级关系。 6. 图:图是一种由节点和边组成的非线性数据结构,其边表示节点之间的关系。例如,一个社交网络可以使用图来表示用户之间的关系,节点表示用户,边表示用户之间的连接。 以上是数据结构的一些基本概念的例子,它们在实际应用有着广泛的应用,可以帮助我们更有效地组织和处理数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值