===============================================================================================
二叉树的定义方式:
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.回溯算法、动态规划的基础在于树的遍历
标签:pR,遍历,struct,int,root,二叉树,小结 From: https://www.cnblogs.com/jinziguang/p/18026177