(一)二叉树的链式表示
1普通链表,其中一个结点表示如下
typedef Ele int;
typedef postion int;
typedef strcut{
Ele data;
postion left;
postion rigth;
}Elem;
typedef struct T{
Elem data[100];//或着Elem *data动态数组
}*Tree;
(二)二叉树的顺序存储
把二叉树补成完全二叉树,存储从数组1开始
任意data[i]的左孩子为data[2*i],右孩子为data[2*i+1]
1普通链表,其中一个结点表示如下
typedef int Elem;
struct Node{
Elem data;
struct Node *left;
struct Node * right;
}
2静态链表
typedef Ele int;
typedef postion int;
typedef strcut{
Ele data;
postion left;
postion rigth;
}Elem;
typedef struct T{
Elem data[100];//或着Elem *data动态数组
}*Tree;
(二)二叉树的顺序存储
把二叉树补成完全二叉树,存储从数组1开始
typedef Elem int;
typedef struct T{
Elem data[100];//或着Elem *data动态数组
}*Tree;
任意data[i]的父亲为data[i/2]
任意data[i]的左孩子为data[2*i],右孩子为data[2*i+1]