存树的几种方法

1:数组存二叉树

#define lc(x) (x<<1)

#define rc(x) ((x<<1)|1)

#define fa(x) (x>>1)

未测试待续版

2:邻接矩阵存树

int a[n][n]

3:邻接表存树

(1)

struct node{
int data,lenn;
friend bool operator <(node a,node b)
{
return a.lenn>b.lenn;
}
};
node make_node(int a,int b)
{
node lss;
lss.data=b,lss.lenn=a;
return lss;
}
struct edge{
int t,l,n;
edge(){
}
edge(int _t,int _l,int _n)
{
t=_t,l=_l,n=_n;
}
};
edge e[200005<<1];
int head[100004],now=0;
void addedge(int ff,int tt,int ll)
{
e[now]=edge(tt,ll,head[ff]);
head[ff]=now++;
}

(2)

vector<int> vec[n];

 

原文地址:https://www.cnblogs.com/zyfltyyz/p/11715382.html