===============================================================================================
二叉树的定义方式:
1.顺序表:
typedef struct SqTree{
char data[maxsize];
bool isNULL;
}SqTree;
2.链表
struct node{
int val;
struct node *lchild,*rchild;
// int Ltag,Rtag; // tag=0,指向孩子,tag=1。指向线索。线索二叉树
};
3.或者使用这种方式定义:
int Tree[35][2];
int deal(int i0,int i1,int pR){
if(i0>i1){
return -1;
}
int i = pos[pre[pR]];
int Llen = i-i0;
int root = pR;
Tree[root][0] = deal(i0,i-1,pR+1);
Tree[root][1] = deal(i+1,i1,pR+Llen+1);
return root;
}
4.也可以定义为结构体:
struct tnode{
int nodeid,lidx,ridx,level;
};
===============================================================================================
树 这种数据类型在顺序存储、链式存储下的体系:



===================================================================================================
其他:
1. 完全二叉树用数组表示时下标一定要从1开始!!!
2. BST的中序序列是递增的。
3. 二叉树先序遍历需要借助栈,栈的入栈顺序就是先序序列、出栈顺序就是中序序列。
4.树的层次遍历和图的bfs、树和图的dfs类似(MST)
5.并查集是树的应用
6.快速排序类似树的先序遍历、归并排序类似树的后序遍历
7.回溯算法、动态规划的基础在于树的遍历
浙公网安备 33010602011771号