[PYTHON] Programmierung für den Kampf in der Welt - Kapitel 4

tree.py



# -*- coding:utf-8 -*-
import math

    
class TreeNode:
    def __init__(self,data=None,left=None,right=None):
        self.data = data
        self.left = left
        self.right = right
        self.adjacent = [self.left,self.right]
        self.visited = False
        self.next =None
        

class Treeutils:
    def __init__(self):
        self.classes = 0
    def treeappend(self,node,x):
        if node == None:
            return TreeNode(x)
        elif x == node.data:
            return node
        elif x < node.data:
            node.left = self.treeappend(node.left,x)
        else:
            node.right = self.treeappend(node.right,x)
            
        return node
        

    def treecheck(self,node):
        if node == None:
            return 0
        leftheight = self.treecheck(node.left)
        if leftheight == -1:
            return -1
        
        rightheight = self.treecheck(node.right)
        if rightheight == -1:
            return -1
        
        heightdiff = leftheight - rightheight
        
        if math.fabs(heightdiff) > 1:
            return -1
        else:
            return max(leftheight,rightheight) + 1
        
    def isBalanced(self,node):
        if self.treecheck(node) == -1:
            return None
        else:
            return True
        
    def createMinBST(self,arr =[],start = 0,end = 0):
        if end < start:
            return None
        mid = (start + end) / 2
        
        n = TreeNode(arr[int(mid)])
        n.left = self.createMinBST(arr,start,mid -1)
        n.right = self.createMinBST(arr,mid+1,end)
        return n
    
    def create(self,x):
        return self.createMinBST(range(x),0,len(range(x))-1)
    
    def covers(self,root,p):
        if root == None:
            return False
        if root == p:
            return True
        return self.covers(root.left,p) or self.covers(root.right,p)
    
    def commonAncestorHelper(self,root,p,q):
        if root == None:
            return None
        if root == p or root == q:
            return root
        is_p_on_left = self.covers(root.left,p)
        is_q_on_right = self.covers(root.right,q)
        
        if is_p_on_left != is_q_on_right:
            return root
        
        child = is_p_on_left if root.left else root.right
        
        return self.commonAncestorHelper(child,p,q)
    
    def commonAncestor(self,root,p,q):
        if self.covers(root,p) != True or self.covers(root,q) != True:
            return None
        return self.commonAncestorHelper(root,p,q)
            
        
    def containsTree(self,node1,node2):
        if node2 == None:return True
        return self.subTree(node1,node2)
    
    def subTree(self,node1,node2):
        if node1 == None:
            return False
        
        if node1.data ==node2.data:
            if self.matchTree(node1,node2):
                return True
        
        return self.subTree(node1.left,node2) or self.subTree(node1.right,node2)
    
    def matchTree(self,node1,node2):
        if node1 == None and node2 == None:
            return True
        
        if node1 or node2 == None:return False
        
        if node1.data != node2.data:return False
        
        return self.matchTree(node1.left,node2.left) and self.matchTree(node1.right,node2.right)
                

Prüfung Ich habe nicht alle vier Kapitel gemacht. Ich mache es, aber es ist einfach nicht aufgeführt (zitternd) Ich bin nicht sicher, ob der Matchbaum richtig funktioniert

Recommended Posts

Programmierung für den Kampf in der Welt - Kapitel 4
Programmieren, um in der Welt zu kämpfen ~ 5-1
Programmierung, um in der Welt zu kämpfen ~ 5-5,5-6
Programmieren, um in der Welt zu kämpfen ~ 5-2
Aktivitätsprotokoll im Programmierkreis
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --1.3 URLify
Im Python-Befehl zeigt Python auf Python3.8
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel - 2,6-mal
Probieren Sie Cython in kürzester Zeit aus
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --2.4 Aufteilen der Liste
Beispiel für die Beantwortung von Python-Code-Antworten --2.7 Schnittknoten
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel - 1,8 "0" -Matrix
Fügen Sie in Jupyter IPerl zum Kernel hinzu.
Zeichnen Sie Grafiken in der Programmiersprache Julia
Verschiedene Kommentare im Programm zu schreiben
Beispiel für eine Python-Codelösung --1.6 Komprimierung von Zeichenketten
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --1.5 One-Shot-Konvertierung
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Python-Code-Antwortbeispiel --3.1 Drei Stapel
Python-Code Lösungsbeispiel --1.7 Matrixrotation
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Python-Code-Antwortbeispiel --1.4 Satzfolge
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Beispiel für eine Python-Codelösung --2.8 Schleifenerkennung
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --- Elemente zwischen 2.3 entfernt
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --2.1 Entfernen Sie doppelte Elemente
Programmieren mit Python
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --1.9 Drehung der Zeichenkette
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code Lösungsbeispiel --1.1 Doppelte Zeichenfolge
Twitter-Streaming-Client zum Genießen im Terminal
Dynamisches Ersetzen der nächsten Methode in Python
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
Tipps zum Schreiben werden in Python kurz abgeflacht
So erhalten Sie die Dateien im Ordner [Python]
Loggen Sie sich mit json mit pygogo ein.
Ich möchte den Fortschritt in Python anzeigen!
Beispiel für die Antwort auf den Python-Code --2.2 Geben Sie Kth von hinten zurück
So rufen Sie den n-ten größten Wert in Python ab
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
So erhalten Sie den Variablennamen selbst in Python
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Ausführen des in Ansible Tower hinzugefügten Ansible-Moduls
So ermitteln Sie die Anzahl der Stellen in Python
Wie Sie das aktuelle Verzeichnis in Python in Blender kennen
Beispiel für die Antwort auf den Python-Code --1.2 Zählen Sie die Anzahl der gleichen Zeichen
Konvertieren Sie das Bild in .zip mit Python in PDF
Setzen Sie DateField des Formulars in Django auf type = date
Verwendung der Exist-Klausel in Django Queryset
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Der Weg nach Pythonista
Python-Programmierung mit Excel
Verwendung des in Lobe in Python erlernten Modells
Versuchen Sie, die in Firefox gespeicherten Anmeldedaten zu entschlüsseln
Der einfachste Linienbot der Welt, um Gewicht zu verlieren
Wie man Python auf Android genießt !! Programmieren für unterwegs !!
Übergeben Sie sich in der Klasse nicht an ProcessPoolExecutor
[Python] So geben Sie Listenwerte der Reihe nach aus
Kaggle Tutorial Titanic Know-how, um in den Top 2% zu sein
Der Weg nach Djangoist
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Die Programmiersprache, die Sie verwenden möchten
Sprechen Sie über die Zeiterfassungs-API in der Programmiersprache
Ich möchte R-Datensatz mit Python verwenden
Python Open CV hat versucht, das Bild im Text anzuzeigen.