关于树的资料

来源:百度知道 编辑:UC知道 时间:2024/05/19 18:16:53
树有关于树的资料!
最好有数据!
如一棵树多就长大,多久被看法!
越多越好!
快一点!
谢谢!
好必有追加分!!!

自下而上逐层生成FBI树
在程序中,要涉及到状态的存储、转换等。选择的数据结构必须先适用于描述状态,并使对状态的各种操作能够明确地定义在数据结构上。FBI树的数据结构不仅满足存储结点类别(‘F’,‘B’,‘Z’)的需要,而且能够方便地计算出左儿子和右儿子。设
tree为FBI树,其中tree[i]为节点i的类型标志,tree[i]∈{‘F’,‘B’,‘Z’};
treel,treer为FBI树的左儿子序列和右儿子序列,即节点i的左儿子序号为treel[i],右儿子序号为treer[i]。
FBI树的编号规则如下:
01串对应的类型作为FBI树的叶子存储于tree[m]¨tree[2*m-1](m=2n)。然后从最底层出发,自下而上地逐层向上计算tree[m-1]¨tree[1],其中节点i的左儿子序号为2*i,右儿子序号为2*i+1,即treel[i]←i*2; treer[i]←i*2+1。显然,根节点的序号为1。
若节点i的左子树的类型(tree[treel[i]])和右子树的类型(tree[treer[i]])至少有一个为‘F’或者一个‘B’和一个‘I’,则节点i的类型为‘F’;
若全‘I’,则节点i的类型为‘I’;若全‘B’,则节点i的类型为‘B’。
readln(n);{输入2的次幂}
if n=0{若01串的长度为1,则根据该字符输出串类型}
then begin
read(ch);
if ch='1'
then writeln('I')
else writeln('B');
halt{退出程序}
end;
m:=1;{计算串长2n}
for i:=1 to n do m:=m*2;
for i:=m to 2*m-1 do{将01串转换成FBI树的叶子}
begin
read(ch);
if ch='1'
then tree[i]:='I'
else tree[i]:='B&#