关闭

26847: 二叉树的遍历

90人阅读 评论(0) 收藏 举报
分类:

题目描述
建立二叉树,然后实现:输出先序遍历、中序遍历、后序遍历的结果。
输入
第一行:结点个数n。
以下行:每行3个数,第一个是父亲,后两个依次为左右孩子,0表示空。
输出
输出:根、先中后序遍历结果。
样例输入

8
1 2 4
2 0 0
4 8 0
3 1 5
5 6 0
6 0 7
8 0 0
7 0 0


样例输出

3
3 1 2 4 8 5 6 7 
2 1 8 4 3 6 7 5 
2 8 4 1 7 6 5 3 


program p26847;
type
  treetype=record
       father:integer;
       lch,rch:integer;
   end;
var
  tree:array[1..200] of treetype;
  n,m,t:integer;
  procedure init;
    var f,l,r,i:integer;
    begin
       readln(n);
      for i:=1 to n do
        begin
          readln(f,l,r); tree[f].lch:=l; tree[f].rch:=r;
          if l<>0 then tree[l].father:=f;
          if r<>0 then tree[r].father:=f;
        end;
    end;
 function root:integer;
    var i:integer;
    begin
      for i:=1 to n do
        if tree[i].father=0 then
          begin
            root:=i;
            exit;
          end;
    end;
procedure preorder(t:integer);
    begin
      if t<>0 then
        begin
          write(t,' ');
          preorder(tree[t].lch);
          preorder(tree[t].rch);
        end;
    end;
  procedure inorder(t:integer);
    begin
      if t<>0 then
        begin
          inorder(tree[t].lch);
          write(t,' ');
          inorder(tree[t].rch);
        end;
    end;
procedure sucorder(t:integer);
    begin
      if t<>0 then
        begin
          sucorder(tree[t].lch);
          sucorder(tree[t].rch);
          write(t,' ');
        end;
    end;
begin
  init;
  t:=root;
  writeln(t);
  preorder(t);writeln;
  inorder(root);writeln;
  sucorder(t);
end.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15201次
    • 积分:108
    • 等级:
    • 排名:千里之外
    • 原创:91篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档