六、树和二叉树--(0)什么是树
来源:互联网 发布:js正则判断数字范围 编辑:程序博客网 时间:2024/06/07 16:45
摘自计蒜客:http://www.jisuanke.com/course/35/1387
树形结构广泛存在我们的现实生活里,下面两张图你一定不陌生吧,第一张是 Linux 文件系统结构,第二张是美国福特汽车公司的汽车家谱图。类似的树形结构还有很多,他们都可以抽象成数据结构里的树。和自然界里的树有所类似又有所不同,他们都有且仅有一个树根,树上的元素都是从树根衍生出来的。不同的是自然界里的树,它的树根在下面,而数据结构里的树,树根在上面。
下面我们利用第一个例子来介绍几个和树相关的概念。
树是由若干个有限结点组成的一个具有层次关系的集合,每棵树有且仅有一个根,比如在图中,最上面的结点就是树的根结点。例子里的“/”、“etc”、“usr”、“lib”等等都是这棵树上的结点,其中“/”是树的根结点。
图中某个结点及其下面的所有结点并称为以该结点为根的子树,例如“usr”、“lib”、“bin”就是“/”的一棵子树,“usr”是该子树的根。结点拥有的子树个数我们称为结点的度,比如结点“/”的度为 7,“home”的度为 3。在例子中,我们称“usr”是“lib”、“bin”的父亲,“lib”、“bin”是“usr”的孩子。没有孩子的结点,也就是度为 0 的结点我们称为叶子,例如“etc”、“lib”、“bin”都是叶子结点。
我们规定根结点是树的第一层,树根的孩子结点是树的第二层,以此类推,树的深度就是结点的最大层数,例如例子里的树,它的深度为 4。
下面我们用第二个例子简单复习下这几个概念,从图上,我们可以看到这是一棵以“美国福特汽车公司”为根结点,深度为 3 的树;“马自达”、“俊郎”是以“美国福特汽车公司”为根结点的一棵子树;“美国福特汽车公司”度为 8,“路虎”度为 0;“美国福特汽车公司”是“阿斯顿马丁”、“路虎”、“捷豹”等的父亲,“阿斯顿马丁”、“路虎”、“捷豹”是“美国福特汽车公司”的孩子;“路虎”、“野马”、“雷鸟”等都是树的叶子结点。通过这两个例子的学习,我们可以发现树的一些性质:
每棵树有且仅有一个根结点;
在树上,从一个结点出发可以访问到其余的结点,并且一个结点到另一个结点的路径有且仅有一条;
父亲结点可以有多个孩子结点,除根结点外,其余的结点有且仅有一个父亲结点;
根结点没有父亲结点,叶子结点没有孩子结点。
- 六、树和二叉树--(0)什么是树
- 六、树和二叉树--(1)什么是二叉树
- 什么是二叉树
- 严蔚敏数据结构学习笔记六.树和二叉树
- javascript数据结构系列(六)-树和二叉树(1)
- 实验六树和二叉树的实验2
- 实验六 树和二叉树的实验2
- CLRS 12.1什么是二叉搜索树
- 什么是二叉树?及二叉树的性质
- 【面试题六】重建二叉树
- [算法系列之六]二叉查找树
- JAVA六种遍历二叉树代码
- 二叉树系列六:求二叉树的宽度
- 六、树和二叉树--(3)已知先序遍历和中序遍历求后序遍历
- 什么是平衡二叉树和平衡二叉树的高度达到O(log2n)最少需要结点数为n
- 六、树和二叉树--(2)二叉树的先序遍历、中序遍历、后序遍历
- 什么是二叉搜索树、二叉搜索树的查找(递归或循环)和二叉搜索树的查找最大最小元素
- 二叉树中,什么是前序,中序,后序
- 一起talk C栗子吧(第一百四十五回:C语言实例--socket概述)
- 顺序表的基本操作
- Unity3d面试3
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enable
- Redis+Spring缓存实例(windows环境,附实例源码及详解)
- 六、树和二叉树--(0)什么是树
- 安装并运行Elasticsearch
- 百练+BFS+图上visit标记嘛,因为是最短嘛,防止重复嘛
- SGU-495 Kids and Prizes(概率DP)
- leetcode——142——Linked List Cycle II
- 【DP】探索数字迷塔
- linux 硬盘分区,分区,删除分区,格式化,挂载,卸载笔记
- Android手机客户端与服务器端的信息通信交互
- yaf框架控制器中的几个函数