1.顺序存储
自上往下、从左至右给每个节点编号(适用于完全/满二叉树,否则空间浪费太多)
对于i节点:其父节点(i/2),左孩子(i*2),右孩子(i*2+1)
2.链式存储
数据域、左孩子指针、右孩子指针、(父节点指针)
struct Node{
int data;
Node* lchild;
Node* rchild;
Node* parent;
};
3.二维数组直接存储
当题目只给出了左右孩子节点,可以直接用二维数组存储,不必建树
son[i][0]:i 节点的左孩子
son[i][1]:i 节点的右孩子
4.链式前向星
当题目未告知父子关系时,仅直到x y之间有边,把树当图存储,建双向边