Saltar al contenido

cómo construir un árbol de búsqueda binario adt usando una lista de nombres ejemplo de código

Después de mucho batallar ya dimos con la respuesta de esta escollo que ciertos los lectores de esta web tienen. Si tienes algún detalle que compartir puedes dejar tu información.

Ejemplo 1: código Python para árbol de búsqueda binaria

#CompleteBinarySearchTreeUsingPython3class node:
    def  __init__(self,data):
        self.data=data
        self.left=None
        self.right=Noneclass binarytree:
    def __init__(self):
        self.root=None

#INSERT

    def insert(self,data):if self.root==None:				
            self.root=node(data)else:
            self._insert(data,self.root)
    def _insert(self,data,cur_node):if data<cur_node.data:if cur_node.left==None:			
                cur_node.left=node(data)else:
                self._insert(data,cur_node.left) 
        elif data>cur_node.data:if cur_node.right==None:
                cur_node.right=node(data)else:
                self._insert(data,cur_node.right)else:print('Data In Treee Already')

#REMOVE

    def remove(self,data):if self.root!=None:
            self._remove(data,self.root)
    def _remove(self,data,cur_node):if cur_node ==None:return cur_node
        if data<cur_node.data:
            cur_node.left=self._remove(data,cur_node.left)
        elif data>cur_node.data:
            cur_node.right=self._remove(data,cur_node.right)else:if cur_node.left is None and cur_node.right is None:print('Removing Leaf Node')if cur_node==self.root:
                    self.root=None
                del cur_node
                returnNoneif cur_node.left is None:print('Removing None with Right Child')if cur_node==self.root:
                    self.root=cur_node.right
                tempnode=cur_node.right
                del cur_node
                return tempnode
            elif cur_node.right is None:print('Removing None with Left Child')if cur_node==self.root:
                    self.root=cur_node.left
                tempnode=cur_node.left
                del cur_node
                return tempnode
            print('Removing Node with 2 Children')
            tempnode=self.getpred(cur_node.left)
            cur_node.data=tempnode.data
            cur_node.left=self._remove(cur_node.data,cur_node.left)return cur_node
    def getpred(self,cur_node):if cur_node.right!=None:return self.getpred(cur_node.right)return cur_node

#INORDER TRAVERSAL

    def inorder(self):if self.root!=None:
            self._inorder(self.root)
    def _inorder(self,cur_node):if cur_node!=None:
            self._inorder(cur_node.left)print(cur_node.data)
            self._inorder(cur_node.right)

#PREORDER TRAVERSAL

    def preorder(self):if self.root!=None:
            self._preorder(self.root)
    def _preorder(self,cur_node):if cur_node!=None:print(cur_node.data)
            self._preorder(cur_node.left)
            self._preorder(cur_node.right)

#POSTORDER TRAVERSAL

    def postorder(self):if self.root!=None:
            self._postorder(self.root)
    def _postorder(self,cur_node):if cur_node!=None:
            self._postorder(cur_node.left)
            self._postorder(cur_node.right)print(cur_node.data)

#MINIMUM VALUE

    def minval(self):if self.root!=None:return self._minval(self.root)
    def _minval(self,cur_node):if cur_node.left!=None:return self._minval(cur_node.left)return cur_node.data

#MAXIMUM VALUE

    def maxval(self):if self.root!=None:return self._maxval(self.root)
    def _maxval(self,cur_node):if cur_node.right!=None:return self._maxval(cur_node.right)return cur_node.data

tree=binarytree()

tree.insert(100)
tree.insert(90)					#			 100
tree.insert(110)				#			/	
tree.insert(95)					#          90110
tree.insert(30)					#		  /  
								#		3095 
tree.remove(110)
tree.remove(90)

tree.inorder()
#tree.preorder()
#tree.postorder()print(tree.minval())print(tree.maxval())

Ejemplo 2: insertar árbol de búsqueda binaria

voidBSNode::insert(std::string value)if(this->_data == value)
		_count++;return;if(this->_data > value)if(this->getLeft()== nullptr)this->_left =newBSNode(value);this->getLeft()->insert(value);return;if(this->getRight()== nullptr)this->_right =newBSNode(value);return;this->getRight()->insert(value);

Reseñas y calificaciones

Si conservas alguna desconfianza o forma de progresar nuestro escrito puedes realizar una aclaración y con gusto lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *