二叉树遍历 pascal3
发布网友
发布时间:2024-03-05 12:12
我来回答
共2个回答
热心网友
时间:2024-07-22 00:45
var
tree:array[1..10000] of longint;
use:array[1..1000] of boolean;
x,i,s,j,h,p:longint;
procedure find1(w:longint);
begin
if w*2>x then begin write(tree[w],' '); exit; end;
find1(w*2);
write(tree[w],' ');
find1(w*2+1);
end;
begin
assign(input,'bintree.in'); reset(input);
assign(output,'bintree.out'); rewrite(output);
readln(h,p);
x:=1;
for i:=1 to h do
x:=x*2;
dec(x);
//以上部分是求出节点的个数
fillchar(use,sizeof(use),false);
i:=1;
while i<=x do
begin
read(tree[i]);
if use[tree[i]] then continue;
use[tree[i]]:=true;
inc(i);
end;
//读入,去重
find1(1);
//处理先序的方法。
//处理中序和后序用的是类似的方法,lz可以自己试着写,记住一点:
子节点的编号是父节点的编号乘以2和乘以2+1
end.
热心网友
时间:2024-07-22 00:42
http://wenku.baidu.com/view/a800a78583d049649b665814.html