多叉树转二叉树的超短实现

根据左孩子又兄弟的规则,可以得到如下的代码段。
1
2
3
4
5
6
fillchar(last,sizeof(last),0);
for i:=1 to n do begin
  readln(a,b);{其中a是b的孩子}
  if last[b]=0 then tree[b].left:=a else tree[last[b]].right:=a;
  last[b]:=a;
end;

last[i]表示i的孩子的最后一个兄弟。 十分简短,留作纪念。

Comments