PDA

Click to See Complete Forum and Search --> : Pascal Binary Trees


zell_ffhut
Nov 12th, 2005, 06:56 PM
Have been trying to write a piece of code, that will allow me to spot weather a tree is a correct Binary Tree, or not.

I feel im quite close to cracking it, but the whole thing is now really confusing me. Can anyone see where im going wrong?



procedure TraverseTree(var flag: integer;t: BinaryTree);
// Traverse Tree
Begin

If t <> nil then
Begin
with t^ do
TraverseTree(flag, t^.left);
if ((t^.left<> nil) AND (t^.right <> nil)) Then
begin
if t^.left.data > t.data then
flag := flag + 1
else
flag := flag;
end;
TraverseTree(flag, t^.right);
if ((t^.left<> nil) AND (t^.right <> nil)) Then
begin
if t^.right.data < t.data then
flag := flag + 1
else
flag := flag;
end
End

End;


function IsItABinarySearchTree(t:BinaryTree): TAnswer;

var ans: TAnswer;
flag: integer;
begin

flag := 0;
ans.known := true;
TraverseTree(flag, t);


If flag = 0 then
ans.answer := true
Else
ans.answer := False;

IsItABinarySearchTree := ans
End;



Any help would be great. Thanks