二叉树 前序、中序、后序

一.基本概念
每个节点最多有2棵子树,左子树和右子树,次序不可颠倒
性质: 1.非空二叉树的第n层上至多有2^(n-1)个元素 2.深度为h的二叉树至多有2^h - 1个节点
满二叉树:所有终端都在同一层次,且非中断结点的度数为2。

在满二叉树中若其深度为h,则包括所包含的结点树必为2^h - 1

完全二叉树:除了最大的层次即成为一颗满二叉树,且层次最大那层的所有结点均向左靠齐,即集中在左面的位置上,不能有空位置。
对于完全二叉树,设一个结点为i,则其父结点为i/2, 2i为左子节点,2i + 1为右子节点

二.存储结构
顺序存储:将数据结构存在一块固定的数组中
`

define LENGTH 100

typedef char datatype;
typedef struct node{
datatype data;
int lchild,rchild;
int parent;
}Node;

Node tree[LENGTH];
int length;
int root;
`
虽然在遍历速度上有一定的优势,但因所占空间比较大,是非主流二叉树,二叉树通常以链式存储

链式存储:
`
typedef char datatype;

typedef struct BinNode{
datatype data;
struct BinNode *lchild;
struct BinNode *rchild;
}BinNode;

typedef BinNode *bintree;
`

三.二叉树的遍历
遍历即将所有结点访问且仅访问一次,按照根结点的位置不同分为前序遍历,中序遍历,后序遍历:
前序遍历: 根结点-> 左子结点 - >右子结点 中序遍历:左子结点 - > 根结点 ->右子结点 后序遍历: 左子结点 - >右子结点 - > 根结点
e.g.:

0_13166086420zyt.gif

前序遍历:abdefgc 中序遍历:debgfac 后序遍历: edfgbca

参考:
http://blog.csdn.net/fansongy/article/details/6798278

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容