在Python中打印没有二叉树的子节点的节点

时间:2019-05-11 23:01:32

标签: python printing binary-tree

我需要帮助打印所有没有此基本二叉树的子节点的节点。目前,我有一个搜索特定数字的函数,如果存在则返回True,否则返回False。该代码基本上具有西班牙语的函数和变量名称:hijoDerecha = rightChildren,hijoIzquierda = leftChildren,Nodo = Node,valor = value。

class Nodo:
    def __init__(self,valor,hijoDerecha=None, hijoIzquierda=None):
        self.valor = valor
        self.hijoDerecha = hijoDerecha
        self.hijoIzquierda = hijoIzquierda

    def AgregaHijo(self,nuevo):
        if nuevo.valor < self.valor:
            if self.hijoIzquierda is None:
                self.hijoIzquierda = nuevo
            else:
                self.hijoIzquierda.AgregaHijo(nuevo)

        else:
            if self.hijoDerecha is None:
                self.hijoDerecha = nuevo
            else:
                self.hijoDerecha.AgregaHijo(nuevo)

class BinaryTree:
    def __init__(self):
        self.raiz = None
    def AgregaValor(self,valor):
        nuevo = Nodo(valor)
        if self.raiz is None:
            self.raiz = nuevo
        else:
            self.raiz.AgregaHijo(nuevo)

    def Buscar(self,valor):
        #Regresa True si encuentra el valor en el arbol
        if valor == self.raiz.valor:
            return True
        elif valor > self.raiz.valor:
            temp = self.raiz.hijoDerecha
            while True:
                if temp.valor == valor:
                    return True
                if valor > temp.valor:
                    if temp.hijoDerecha == None:
                        return False
                    temp = temp.hijoDerecha
                elif valor < temp.valor:
                    if temp.hijoIzquierda == None:
                        return False
                    temp = temp.hijoIzquierda

        elif valor < self.raiz.valor:
            temp = self.raiz.hijoIzquierda
            while True:
                if temp.valor == valor:
                    return True
                if valor > temp.valor:
                    if temp.hijoDerecha == None:
                        return False
                    temp = temp.hijoDerecha
                elif valor < temp.valor:
                    if temp.hijoIzquierda == None:
                        return False
                    temp = temp.hijoIzquierda

    def ImprimeHojas(self):
        #Se imprime el valor de todos los nodos que no tienen hijos
        pass
    def ImprimeEnOrden(self):
        #Se imprime el hijo izquierdo, nodo y derecho
        pass

    def ImprimeEnPreOrden(self):
        #Se imprime el nodo, el hijo izquierdo y luego el derecho
        pass
    def ImprimeEnPostOrden(self):
        pass

import random as randy
bt = BinaryTree()
for i in range(100):
    bt.AgregaValor(randy.randint(1,100))
print(bt.Buscar(10))

由于随机函数会向二进制树添加随机数,因此预期结果将是随机的。

0 个答案:

没有答案