1.树基本概念
是一种数据结构,可以用来表示层次关系,因表示的样子很像一颗倒立的树而得名。
1.1树的基本概念
- 节点的度:一个节点含有的子树的个数称为该节点的度;
- 叶节点或终端节点:度为0的节点称为叶节点;
- 非终端节点或分支节点:度不为0的节点;
- 双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点
- 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
- 树的度:一棵树中,最大的节点的度称为树的度;
- 树的高度或深度:树中节点的最大层次
- 节点的祖先:从根到该节点所经分支上的所有节点;
- 子孙:以某节点为根的子树中任一节点都称为该节点的子孙
- 森林:由m(m>=0)棵互不相交的树的集合称为森林;
2.二叉树
二叉树的特征是,除了叶以外的结点,都有两个子。(叶就是在它和根的路径上,没有比他更远的结点了,也可以理解为,只有一个结点和它相连,并且它不是根,那么他就是叶)
2.1满二叉树
一颗深度为k且有2^k-1个结点的二叉树称为满二叉树。
除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。
2.2完全二叉树
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
2.3二叉树遍历
层次遍历
按照层次结构进行遍历
A->B->C->D->E->F先序遍历
遍历顺序为:根节点–>左子节点–>右子节点
A->B->D->E->C->F中序遍历
遍历顺序为:左子节点–>根节点–>右子节点
D->B->E->A->F->C后续遍历
遍历顺序为:左子节点–>右子节点 –>根节点
D->E->B->F->C->A
3.二叉树的实现
3.1节点数据结构
typedef struct node
{
int data; //数据
struct node* leftchild;//左子节点指针
struct node* rightchild;//右子节点指针
}*ptrnode;