父亲表示法
顾名思义,就是只记录每个结点的父结点。
int n; int p[MAX_N]; // 指向每个结点的父结点
孩子表示法
如上,就是只记录每个结点的子结点。
int n; int cnt[MAX_N]; // 记录每个结点的子结点的数量 int p[MAX_N][MAX_CNT]; // 指向每个结点的子结点
父亲孩子表示法
就是同时记录每个结点的父结点和子结点。
int n; int cnt[MAX_N]; // 记录每个结点的子结点的数量 int p[MAX_N]; // 指向每个结点的父结点 int s[MAX_N][MAX_CNT]; // 指向每个结点的子结点
孩子兄弟表示法(二叉树表示法)
这是一个很好的方法,具体就是将树转换成二叉树,左结点指向自己的第一个子结点,右结点指向自己的第一个右兄弟。
转换方法可以看这里。
int n; int lt[MAX_N] // 指向每个结点的第一个子结点 int rt[MAX_N] // 指向每个结点的第一个右兄弟