二叉树与图

******************树与二叉树******************
【1】树的概念 
树(树)是n(n≥0)个节点的有限集合T,
它满足两个条件:
有且仅有一个特定的称为根(Root)的节点;
其余的节点可以分为m(m≥0)个互不相交的有限集合T1,T2,......,Tm,其中每一个集合又是一棵树,并称为其根子树(Subtree)。
【2】度
一个节点的子树的个数称为节点的度数,一棵树的度数是指该树中节点的最大度数
度数为零的节点称为树叶或终端节点,度数不为零的节点称为分支节点,除根节点外的分支节点称为内部节点。
一个节点的子树之根节点称为该节点的子节点,该节点称为它们的父节点,同一节点的各个子节点之间称为兄弟节点。一棵树的根节点没有父节点,叶节点没有子节点。
【3】路径
一个节点系列k1,k2,......,ki,ki + 1,......,kj,并满足ki是ki + 1的父节点,就称为一条从k1到KJ 路径,路径的长度为J-1,即路径中的边数。路径中前面的节点是后面节点的祖先,后面节点是前面节点的子孙。 
【4】高度(深度)
节点的层数等于父节点的层数加一,根节点的层数定义为一。树中节点层数的最大值称为该树的高度或深度。
【5】若树中每个节点的各个子树的排列为从左到右,不能交换,即兄弟之间是有序的,则该树称为有序树。一般的树是有序树。
【6】m(m≥0)棵互不相交的树的集合称为森林。树去掉根节点就成为森林,森林加上一个新的根节点就成为树。
【7】树的逻辑结构 
树中任何节点都可以有零个或多个直接后继节点(子节点),但至多只有一个直接前趋节点(父节点),根节点没有前趋节点,叶节点没有后继节点。 
【8】二叉树 
二叉树(二叉树)是n(n≥0)个节点的有限集合,
它或者是空集(n = 0),或者是由一个根节点以及两棵
互不相交的,分别称为左子树和和右子树的二叉树组成。
二叉树与普通有序树不同,二叉树严格区分左孩子和右
孩子,即使只有一个子节点也要区分左右。
【9】二叉树的性质 
二叉树第i(i≥1)层上的节点最多为2〜第(i-1)个。
深度为K(k≥1)的二叉树最多有2〜K-1个节点。
在任意一棵二叉树中,树叶的数目比度数为2的节点的数据多一。
总节点数为各种节点之和:n = n0 + n1 + n2  
总节点数为所有子节点数加一:n = n1 + 2 * n2 + 1
故得:n0 = n2 + 1;
满二叉树:深度为K(k≥1)时有2K-1个节点的二叉树。
全二叉树:只有最下面两层有度数小于2的节点,最下面御姐一层的叶节点集中在最左边的若干位置上
【10二叉树】的存储 
当2 *i≤n时,有左孩子,其编号为2 * i,否则没有左孩子,本身是叶节点;
当2 * i +1≤n时,有右孩子,其编号为2 * i + 1,否则没有右孩子;
【11】二叉树的遍历 
先序遍历:先访问树根,再访问左子树,最后访问右子树;根左右
中序遍历:先访问左子树,再访问树根,最后访问右子树;根左向左向右
后序遍历:先访问左子树,再访问右子树,最后访问树根;左右根



******************图*********************
【1】定义
图(Graph)是一种非线性数据结构,数据之间是多对多的关系
【2】有向图(Digraph)
设Vi,Vj为图中的两个顶点,表示:,Vi为弧尾,Vj为弧头部
【3】无向图(Undigraph)
设Vi,Vj为图中的两个顶点,表示:( Vi,Vj)
【4】稀疏图(Sparse Graph)和稠密图(Dense Graph)
弧或边的条数量很少的图称为稀疏图,反之称为稠密图。
【5】网(Network)
若在图的关系或(Vi,Vj)上附加一个值w:
【6】顶点的度(degree)

无向图(无向图):某一点的度的英文指与之相直接关联的节点的个数有向图产品(有向图);某一点的度=出度+入度

【7】路径)若从顶点V出发,经过某些顶点能到达另一顶点V '则称V与V'之间存在一条路径。若路径(Vi1的的,Vi2的的,...... ,VIM)中顶点不重复出现,则称其为简单路径;若路径中只有第一顶点Vi1与最后一个顶点的Vim相同,则称其为简单回路或简单环(Cycle)。

【8】深度优先搜索(深度优先搜索,简称DFS)

类似树的先根遍历。设初始时,图中各顶点均未被访问,

从图中某顶点(设为V0)出发,访问V0,然后搜索V0一的
个邻接点VI中,若六未被访问,则访问之,再搜索六一个的
邻接点(深度优先)......。若某顶点的邻接点全部访问完毕
则回溯(回溯)到它的上一顶点,再然后从此顶点
汉语中类似的按深度优先的方法搜索下去,......,能直到访问的顶点都访
问完毕为止。 

你可能感兴趣的:(Linux,C)