数据结构——树
2016-04-08 18:44
267 查看
树是一种很常用的数据结构,一般用来表示具有层次结构的数据。
本篇博客中主要包含三个方面:1.树的定义和基本概念 2.二叉树
一、树的定义和基本概念
1)树是n(n>=0)个结点的有限集合。当n=0时是一棵空树,当n>0时,至少含有一个结点。
2)根(Root):有且仅有一个结点(n=1)时,那个结点就是根节点
3)子树(Subtree):当n>1时,除了根节点以外的其余结点可以分为m个互不相交的集合,每个集合又可以构成一棵树,成为根的子树
4)叶子结点(leaf):没有子结点的结点
5)父结点(parent)和子结点(child):若结点x有一个以结点y为树根的子树,则x为y的父结点,y为x的孩子
6)兄弟结点(sibling):若z和y有同一个父亲,则z和y互为兄弟。
7)结点的度(degree):结点子树的个数
8)树的度:一棵树中最大的结点的度数
9)结点的层次(level):将根结点的层次设为1,其子结点的层次为2,以此类推
10)树的深度(depth):叶子结点的最大层次
11)祖先(ancestor):由某结点x到根节点的路径上的所有结点,均称为x的祖先。
举个例子:
这棵树共有13个结点(n=13),根节点为A,{B,E,F,K,L}、{C,G}、{D,H,I,J,M}是A的三棵子树,K,L,M是三个叶子节点,他们没有子树了。
B是A的子结点,是E,F的父结点,和C,D是兄弟。
B的度是2,D的度是3,结点的度最大是3(D的度),故树的度是3.
A的层次是1,B,C,D的层次是2,E,F,G,H,I,J的层次是3,K,L,M的层次是4,叶子节点(K,L,M)的最大层次是4,故树的深度是4.
M的祖先是H,D,A。
二、二叉树(Binary Tree)
首先,二叉树也是树,树的概念他都有的,只是比较特别。特别之处就在于:每个节点至多只有两个孩子,分为左孩子和右孩子。也就是说每个节点的度至多为2.
本篇博客中主要包含三个方面:1.树的定义和基本概念 2.二叉树
一、树的定义和基本概念
1)树是n(n>=0)个结点的有限集合。当n=0时是一棵空树,当n>0时,至少含有一个结点。
2)根(Root):有且仅有一个结点(n=1)时,那个结点就是根节点
3)子树(Subtree):当n>1时,除了根节点以外的其余结点可以分为m个互不相交的集合,每个集合又可以构成一棵树,成为根的子树
4)叶子结点(leaf):没有子结点的结点
5)父结点(parent)和子结点(child):若结点x有一个以结点y为树根的子树,则x为y的父结点,y为x的孩子
6)兄弟结点(sibling):若z和y有同一个父亲,则z和y互为兄弟。
7)结点的度(degree):结点子树的个数
8)树的度:一棵树中最大的结点的度数
9)结点的层次(level):将根结点的层次设为1,其子结点的层次为2,以此类推
10)树的深度(depth):叶子结点的最大层次
11)祖先(ancestor):由某结点x到根节点的路径上的所有结点,均称为x的祖先。
举个例子:
这棵树共有13个结点(n=13),根节点为A,{B,E,F,K,L}、{C,G}、{D,H,I,J,M}是A的三棵子树,K,L,M是三个叶子节点,他们没有子树了。
B是A的子结点,是E,F的父结点,和C,D是兄弟。
B的度是2,D的度是3,结点的度最大是3(D的度),故树的度是3.
A的层次是1,B,C,D的层次是2,E,F,G,H,I,J的层次是3,K,L,M的层次是4,叶子节点(K,L,M)的最大层次是4,故树的深度是4.
M的祖先是H,D,A。
二、二叉树(Binary Tree)
首先,二叉树也是树,树的概念他都有的,只是比较特别。特别之处就在于:每个节点至多只有两个孩子,分为左孩子和右孩子。也就是说每个节点的度至多为2.
相关文章推荐
- 数据结构(线段树):BZOJ 1018: [SHOI2008]堵塞的交通traffic
- 数据结构实用概念
- 【学习笔记----数据结构07-队列】
- 【学习笔记----数据结构06-栈的应用】
- 数据结构-堆
- 【学习笔记----数据结构05-栈与队列】
- 【学习笔记----数据结构04-单循环链表】
- 位运算-Number of 1 Bits(求一个十进制数字,它的二进制表示中有多少个 1(bit))
- 【学习笔记----数据结构03--线性链表】
- 数组分段查找
- 栈-Min Stack(实现一个栈,用常数级时间找出栈中的最小值)
- 【学习笔记----数据结构01-概述】
- hdu 1506(dp || 单调栈)
- 常用数据结构及类
- HashMap源码注解 之 内部数据结构 Node (三)
- 1、Linux驱动重要的数据结构
- 数据结构学习(1)
- 【学习笔记----数据结构02--线性表】
- SDUT 2116----数据结构实验之链表一:顺序建立链表
- 数据结构与算法——AVL树类的C++实现