物理结构:信息在内存的表示
顺序存储
链式存储
逻辑结构:
1、散列
2、线性表 1:1
顺序线性表
链式线性表
3、树形结构 1:N
概念:是n(n>=0)个节点的的有限集合(n=0称为空树)。在任意一棵非空树中:(n=1)有且仅有一个特定的节点称为根(Root)节点,n>1时,其余节点(非根结点)可分为y个互不相交的有限集。
节点的分类:
节点的度:每个节点拥有子节点的个数
树的度 :最大节点度
节点的关系:
孩子节点:节点的子树
双亲节点:相应拥有孩子的节点
兄弟节点:同一个双亲节点的
树的层次:
节点的层次:从根节点开始,根的子节点层次+1,直至到此节+1
树的层次(高度、深度):最大节点的层次
堂兄弟:在一同层次的节点,且不同双亲的节点
树的存储:(物理存储:顺序存储,链式存储)
顺序树形结构:有数组存储节点,表示出1:N
链式存储结构:有链表来存储节点
双亲法:只需要记录每个节点的父节点
优点:访问上层很方便 缺点:访问子节点麻烦(必须从头到尾节点遍历)
孩子法:每个节点只需要记录子点即可。
优点:访问子节点方便 缺点:浪费存储空间,
叶子节点:没有孩子节点(节点度为0)
二叉树:是n(n>=0)个节点有限集合:(n==0空的二叉树),且由一个根节点和两棵互不相交的左右子节点的二叉树组成。
特殊的形状:(n<=2)
1、空树 n=0
2、只有一个根 n=1
3、左子树 n=2
4、右子树 n=2
特殊二叉树:
斜树: 所有节点在右子树或者左子树上 (n>1)
满二叉树: 如果所有节点的都存在左右孩子,并且叶子在同一层上
完全二叉树:给每个节点取一个连续编号,如果编号与满二叉树相同
总结1:
1、在二叉树第i层次最多节点(满):2~(i-1)
2、层次为d的二叉树最多有多少个节点(满):2~d -1
遍历:(从根开始)每个节点都访问一次。
层次、前序,中序、后序
层次: A-B-C-D-E-F
前序:先访问此树根,再访问左子树,最后此树的右子树
printf->root
left
right
总结:第一个节就是根节点。
中序:先访问此节点的左子树,再访问根节点,最后访问右子树
left
printf->root
right
总结:根节点在中间,左子树在根的左侧,右子树在根右侧
前、中遍历:
前:ABDECFG A-根
中:DBEAFCG DBE作为A(根)的左子树 FCG作为根的右子树
后序:
顺序存储
链式存储
逻辑结构:
1、散列
2、线性表 1:1
顺序线性表
链式线性表
3、树形结构 1:N
概念:是n(n>=0)个节点的的有限集合(n=0称为空树)。在任意一棵非空树中:(n=1)有且仅有一个特定的节点称为根(Root)节点,n>1时,其余节点(非根结点)可分为y个互不相交的有限集。
节点的分类:
节点的度:每个节点拥有子节点的个数
树的度 :最大节点度
节点的关系:
孩子节点:节点的子树
双亲节点:相应拥有孩子的节点
兄弟节点:同一个双亲节点的
树的层次:
节点的层次:从根节点开始,根的子节点层次+1,直至到此节+1
树的层次(高度、深度):最大节点的层次
堂兄弟:在一同层次的节点,且不同双亲的节点
树的存储:(物理存储:顺序存储,链式存储)
顺序树形结构:有数组存储节点,表示出1:N
链式存储结构:有链表来存储节点
双亲法:只需要记录每个节点的父节点
优点:访问上层很方便 缺点:访问子节点麻烦(必须从头到尾节点遍历)
孩子法:每个节点只需要记录子点即可。
优点:访问子节点方便 缺点:浪费存储空间,
叶子节点:没有孩子节点(节点度为0)
二叉树:是n(n>=0)个节点有限集合:(n==0空的二叉树),且由一个根节点和两棵互不相交的左右子节点的二叉树组成。
特殊的形状:(n<=2)
1、空树 n=0
2、只有一个根 n=1
3、左子树 n=2
4、右子树 n=2
特殊二叉树:
斜树: 所有节点在右子树或者左子树上 (n>1)
满二叉树: 如果所有节点的都存在左右孩子,并且叶子在同一层上
完全二叉树:给每个节点取一个连续编号,如果编号与满二叉树相同
总结1:
1、在二叉树第i层次最多节点(满):2~(i-1)
2、层次为d的二叉树最多有多少个节点(满):2~d -1
遍历:(从根开始)每个节点都访问一次。
层次、前序,中序、后序
层次: A-B-C-D-E-F
前序:先访问此树根,再访问左子树,最后此树的右子树
printf->root
left
right
总结:第一个节就是根节点。
中序:先访问此节点的左子树,再访问根节点,最后访问右子树
left
printf->root
right
总结:根节点在中间,左子树在根的左侧,右子树在根右侧
前、中遍历:
前:ABDECFG A-根
中:DBEAFCG DBE作为A(根)的左子树 FCG作为根的右子树
后序: