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
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