2016-03-18 4 views
0

implementieren und testen Sie die folgende BST MethodePython-Implementierung und testen Sie die folgende BST Methode

ich mit diesem Code arbeitete Binärbaum Knotenklasse und die binäre Baum Klasse zu implementieren um zu überprüfen, ob zwei BSTs identisch sind. Die Methode ist rekursiv und benötigt eine Hilfsfunktion.

Dies ist, was ich bis jetzt habe, habe ich Probleme beim Schreiben eines Hauptprogramms. Kann mir bitte jemand helfen?

def is_identical(self, rs): 

    identical = self._is_identical_aux(self._root, rs._root) 
    return identical 

def _is_identical_aux(self, node1, node2): 

    result = True 
    if node1._value != node2._value: 
     result = False 
    if node1._left is not None and node2._left is not None and result == True: 
     result = self._is_identical_aux(node1._left, node2._left) 
    if node1.right is not None and node2._right is not None and result == True: 
     result = self._is_identical_aux(node1._right, node2._right) 
    return result 
+0

Was meinen Sie das Hauptprogramm ?? Sie meinen, den Binärbaum zu konstruieren und 'is_identical()' aufzurufen? Sie haben nicht genug Details zur Verfügung gestellt ... – AChampion

+0

@AChampion yeah, Treiberprogramm zum Testen der Funktion. – aleen1

+0

Möchten Sie, dass wir einen Code schreiben, um Ihren Code zu testen? –

Antwort

0

Ihr Code sieht falsch aus. Bitte versuchen Sie den folgenden Code. Hier

def _is_identical_aux(self, node1, node2): 
    if node1 is None and node2 is None: 
     return True 
    if node1 is not None and node2 is not None: 
     return ((node1._value == node2._value) and 
       _is_identical_aux(node1.left, node2.left) and 
       _is_identical_aux(node1.right, node2.right)) 
    return False 

ist der Test:

class Node: 
    def __init__(self, data): 
     self._value = data 
     self.left = None 
     self.right = None 

def _is_identical_aux(node1, node2): 
    if node1 is None and node2 is None: 
     return True 
    if node1 is not None and node2 is not None: 
     return ((node1._value == node2._value) and 
       _is_identical_aux(node1.left, node2.left) and 
       _is_identical_aux(node1.right, node2.right)) 
    return False 

root1 = Node(7) 
root1.left = Node(3) 
root1.right = Node(2) 
root1.left.left = Node(123) 
root1.left.right = Node(231) 
root1.right.left = Node(9) 
root1.right.right = Node(5) 

root2 = Node(7) 
root2.left = Node(3) 
root2.right = Node(2) 
root2.left.left = Node(123) 
root2.left.right = Node(231) 
root2.right.left = Node(9) 
root2.right.right = Node(5) 

root3 = Node(7) 
root3.left = Node(3) 
root3.right = Node(2) 

if _is_identical_aux(root1, root2): 
    print "Both trees are identical" 
else: 
    print "Trees are not identical" 

if _is_identical_aux(root1, root3): 
    print "Both trees are identical" 
else: 
    print "Trees are not identical" 

Ergebnisse:

Both trees are identical 
Trees are not identical 
+0

Wie kann ich zwei binäre Bäume eingeben, um sie zu testen, das ist, was ich meinte und danke. – aleen1