数据结构基础之树
2016-02-06 17:18
375 查看
树
1,一些基本概念
树是n个结点的有限集,n=0时称为空树。在任意一棵非空树中:有而且只有一个特定的称为根(root)的结点;当n>1时,其余结点为m个互相不交的有限集,其中每一个集合又是一棵树,并且成为根的子树。
结点的分类:结点拥有的子树称为结点的度,度为0的结点称为叶结点或终端结点;度不为0的结点称为非终端结点或分支结点。除根结点外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。
结点间的关系:结点的子树的根称为该结点的孩子,该结点称为孩子的父母(parent)。结点的祖先是从根到该结点所经历分支上的所有结点。以某结点为根的子树中的任一结点都称为该结点的子孙。
树的深度:树的层次从根开始定义,根为第一层,然后往下是第二层。树中结点的最大层次称为树的深度。
无序与有序:树中结点的各子树从左到右是有次序而且不能互换的称为有序树,否则称为无序树。
森林:n课互不相交的树的集合
2,二叉树
二叉树是n个结点的有限结合,有一个根结点和两棵互不相交的称为左子树和右子树的二叉树组成。
特点:每个结点最多只有两棵子树,没有子树或者只有一棵子树都是可以的;左右子树是有次序
2.1,二叉树分类
斜树:所有的结点都只有左子树叫左斜树,反之叫右斜树。
满二叉树:在一棵二叉树中,所有分支结点都存在左子树和右子树,并且所有叶子都在同一层。
完全二叉树:对一棵二叉树按照层序编号,如果编号为i的结点在二叉树中位置完全相同,则这课二叉树称为完全二叉树
2.2,二叉树的性质
在二叉树的第i层上至多有2^(i-1)个结点
深度为k的二叉树至多有2^(k-1)个结点
具有n个结点的完全二叉树的深度为log_2n+1
顺序存储结构一般只用与完全二叉树
1,一些基本概念
树是n个结点的有限集,n=0时称为空树。在任意一棵非空树中:有而且只有一个特定的称为根(root)的结点;当n>1时,其余结点为m个互相不交的有限集,其中每一个集合又是一棵树,并且成为根的子树。
结点的分类:结点拥有的子树称为结点的度,度为0的结点称为叶结点或终端结点;度不为0的结点称为非终端结点或分支结点。除根结点外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。
结点间的关系:结点的子树的根称为该结点的孩子,该结点称为孩子的父母(parent)。结点的祖先是从根到该结点所经历分支上的所有结点。以某结点为根的子树中的任一结点都称为该结点的子孙。
树的深度:树的层次从根开始定义,根为第一层,然后往下是第二层。树中结点的最大层次称为树的深度。
无序与有序:树中结点的各子树从左到右是有次序而且不能互换的称为有序树,否则称为无序树。
森林:n课互不相交的树的集合
2,二叉树
二叉树是n个结点的有限结合,有一个根结点和两棵互不相交的称为左子树和右子树的二叉树组成。
特点:每个结点最多只有两棵子树,没有子树或者只有一棵子树都是可以的;左右子树是有次序
2.1,二叉树分类
斜树:所有的结点都只有左子树叫左斜树,反之叫右斜树。
满二叉树:在一棵二叉树中,所有分支结点都存在左子树和右子树,并且所有叶子都在同一层。
完全二叉树:对一棵二叉树按照层序编号,如果编号为i的结点在二叉树中位置完全相同,则这课二叉树称为完全二叉树
2.2,二叉树的性质
在二叉树的第i层上至多有2^(i-1)个结点
深度为k的二叉树至多有2^(k-1)个结点
具有n个结点的完全二叉树的深度为log_2n+1
顺序存储结构一般只用与完全二叉树
相关文章推荐
- 数据结构:队列ADT
- [LeetCode] Two Sum III - Data structure design 两数之和之三 - 数据结构设计
- 数据结构之单向链表
- 数据结构基础之栈
- 数据结构基础之串
- 数据结构图文解析之:二叉堆详解及C++模板实现
- 数据结构基础之双向链表(约瑟夫问题)
- 数据结构--动态规划
- 数据结构(5)--栈的定义以及相关操作的实现
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序五:归并求逆序数
- 数据结构之单向链表
- 小蚂蚁学习数据结构(30)——图的其他知识点简介
- 数据结构(4)--循环链表的应用之约瑟夫环问题以及线性表总结之顺序表与链表的比较
- 【Redis笔记(六)】 Redis数据结构 - 有序集合zset
- 学习笔记------数据结构(C语言版)队列链式存储
- LinuxC常用数据结构及函数总结
- C++数据结构栈的实现
- Floodlight之 FloodlightContextStore 数据结构