Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure Traverse (Tree : in out Tree_Type;
- Order : in Traversal_Order) is
- x:Integer:=1;
- procedure Checked_Process (Element: in out Element_Type) is
- New_Element: Element_Type := Element;
- begin
- Process (New_Element);
- if Key_Of (Element) /= Key_Of (New_Element) then
- Put("No value found!");
- raise No_Key;
- else
- Element := New_Element;
- end if;
- end Checked_Process;
- procedure MAX (Element: in out Element_Type) is
- New_Element: Element_Type := Element;
- begin
- if x=1 then
- Process (New_Element);
- x:=0;
- end if;
- if Key_Of (Element) /= Key_Of (New_Element) then
- Put("No value found!");
- raise No_Key;
- else
- Element := New_Element;
- end if;
- end MAX;
- procedure MIN (Element: in out Element_Type) is
- New_Element: Element_Type := Element;
- begin
- if x=0 then
- Process (New_Element);
- x:=1;
- end if;
- if Key_Of (Element) /= Key_Of (New_Element) then
- Put("No value found!");
- raise No_Key;
- else
- Element := New_Element;
- end if;
- end MIN;
- procedure Inorder (Tree : in Tree_Type) is
- begin
- if Tree /= null then
- --Put_Line(Retrieve(Tree, Integer));
- Inorder (Tree => Tree.Left); -- Traverse Left subtree
- Checked_Process (Tree.Info);
- Inorder (Tree => Tree.Right); -- Traverse Right subtree
- end if;
- end Inorder;
- procedure Preorder (Tree : in Tree_Type) is
- begin
- if Tree /= null then
- Inorder (Tree => Tree.Left); -- Traverse Left subtree
- MIN (Tree.Info);
- Inorder (Tree => Tree.Right);--Traverse Right subtree
- end if;
- end Preorder;
- procedure Postorder (Tree : in Tree_Type) is
- begin
- if Tree /= null then
- Inorder (Tree => Tree.Right); -- Traverse Left subtree
- MAX (Tree.Info);
- Inorder (Tree => Tree.Left); -- Traverse Right subtree
- end if;
- end Postorder;
- begin -- Traverse
- case Order is
- when Inorder => Inorder (Tree);
- when Preorder => Preorder (Tree);
- when Postorder => Postorder (Tree);
- end case;
- end Traverse;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement