一、定义
二叉树:二叉树是n(n³0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。二、二叉树的性质
满二叉树:在一棵二叉树中,如果所有的分支结点都存在左子树和右子树,并且所有的叶子结点都在同一层上。
完全二叉树:一棵深度为K的n个结点的二叉树,对树中的结点从上到下,从左到右编号,如果编号为i的结点与满二叉树中的编号为i的结点在二叉树中的位置相同,称这颗树为完全二叉树。
二、特点
- 每个结点至多有二棵子树
- 二叉树的子树有左、右之分,且其次序不能任意颠倒
三、性质
性质1:深度为k的二叉树至多有 2k-1 个结点(k³1);
性质2:深度为k的二叉树至多有 2k-1 个结点(k³1);
性质3:对任何一棵二叉树T,如果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1;
性质4:
四、二叉树的存储结构
1.顺序存储结构
实现:按满二叉树的结点层次编号,依次存放二叉树中的数据元素
特点:
–结点间关系蕴含在其存储位置中
–浪费空间,适于存满二叉树和完全二叉树
2. 链式存储结构
–二叉链表
1 typedef struct node
2 { datatype data;
3 struct node *lchild, *rchild;
4 }JD;
在n个结点的二叉链表中,有n+1个空指针域
3.三叉链表
1 typedef struct node
2 { datatype data;
3 struct node *lchild, *rchild, *parent;
4 }JD;
1. 前序/中序/后序遍历(递归实现)
2. 前序遍历(非递归实现)
3. 中序遍历(非递归实现)
4. 后序遍历(非递归实现)
5. 层序遍历(使用队列)
http://www.cnblogs.com/kekec/archive/2011/10/11/2207671.html