树的储存结构
双亲储存结构
顺序存储结构
struct Ptree{
T data;
int parent;
};
优点:可以快速的定位双亲结点
缺点:如果要找子结点需要遍历全部
孩子链存结构
struct TsonNode{
T data;
TsonNode * sons[MaxSons];
};
缺点:固定了MaxSons,会有大量的指针域为空,适合小树。
证明:含有n个结点的m次树采用孩子链存结构有 mn - n + 1个空指针域
先来个简单的二叉树,n个结点,则共有 2n 个指针域,根据树的定义,每个结点(除去根节点)都有唯一一个双亲结点所以有 n-1 个结点是指向父节点的。空余的结点:2n - (n -1) = n + 1
拓展到m次树,mn个指针域,n-1个指向父节点,空指针:mn - n + 1 ~
孩子兄弟链储存结构【💗】
口诀:左孩子,右兄弟
孩子兄弟储存很容易弄错吧~这里没有深度,只有孩子兄弟
记1:右下对角线是同一层次兄弟的关系
记2:左下对角线是父子关系