Type Node As Integer isTuple As Integer value As Node Ptr izda As Node Ptr dcha End Type Function CreateNode(value As Integer) As Node Ptr Dim As Node Ptr n = New Node n->isTuple = 0 n->value = value n->izda = 0 n->dcha = 0 Return n End Function Function CreateTuple(izda As Node Ptr, dcha As Node Ptr) As Node Ptr Dim As Node Ptr n = New Node n->isTuple = 1 n->izda = izda n->dcha = dcha Return n End Function Sub Fringe(tree As Node Ptr, result() As Integer) If tree = 0 Then Return If tree->isTuple Then Fringe(tree->izda, result()) Fringe(tree->dcha, result()) Else Redim Preserve result(Ubound(result) + 1) result(Ubound(result)) = tree->value End If End Sub Function SameFringe(tree1 As Node Ptr, tree2 As Node Ptr) As Boolean Dim As Integer result1(), result2() Fringe(tree1, result1()) Fringe(tree2, result2()) If Ubound(result1) <> Ubound(result2) Then Return False For i As Integer = 0 To Ubound(result1) If result1(i) <> result2(i) Then Return False Next Return True End Function ' casos de prueba Dim As Node Ptr A = _ CreateTuple(CreateNode(1), _ CreateTuple(CreateNode(2), _ CreateTuple(CreateNode(3), _ CreateTuple(CreateNode(4), _ CreateTuple(CreateNode(5), _ CreateTuple(CreateNode(6), _ CreateTuple(CreateNode(7), CreateNode(8) ))))))) Dim As Node Ptr B = _ CreateTuple(CreateNode(1), _ CreateTuple(CreateTuple(CreateNode(2), CreateNode(3)), _ CreateTuple(CreateNode(4), _ CreateTuple(CreateNode(5), _ CreateTuple(CreateTuple(CreateNode(6), CreateNode(7)), CreateNode(8) ))))) Dim As Node Ptr X = _ CreateTuple(CreateNode(1), _ CreateTuple(CreateNode(2), _ CreateTuple(CreateNode(3), _ CreateTuple(CreateNode(4), _ CreateTuple(CreateNode(5), _ CreateTuple(CreateNode(6), _ CreateTuple(CreateNode(7), _ CreateTuple(CreateNode(8), CreateNode(9) )))))))) Dim As Node Ptr Y = _ CreateTuple(CreateNode(0), _ CreateTuple(CreateNode(2), _ CreateTuple(CreateNode(3), _ CreateTuple(CreateNode(4), _ CreateTuple(CreateNode(5), _ CreateTuple(CreateNode(6), _ CreateTuple(CreateNode(7), CreateNode(8) ))))))) Dim As Node Ptr Z = _ CreateTuple(CreateNode(1), _ CreateTuple(CreateNode(2), _ CreateTuple(CreateTuple(CreateNode(4), CreateNode(3)), _ CreateTuple(CreateNode(5), _ CreateTuple(CreateNode(6), _ CreateTuple(CreateNode(7), CreateNode(8) )))))) Print "tree A and tree A have the same leaves: "; SameFringe(A, A) Print "tree A and tree B have the same leaves: "; SameFringe(A, B) Print "tree A and tree X have the same leaves: "; SameFringe(A, X) Print "tree A and tree Y no have the same leaves: "; Not SameFringe(A, Y) Print "tree A and tree Z no have the same leaves: "; Not SameFringe(A, Z) Sleep