How to implement a binary search tree in Python?

前端 未结 18 2177
眼角桃花
眼角桃花 2020-11-30 22:25

This is what I\'ve got so far but it is not working:

class Node:
    rChild,lChild,data = None,None,None

    def __init__(self,key):
        self.rChild = N         


        
18条回答
  •  鱼传尺愫
    2020-11-30 23:21

    its easy to implement a BST using two classes, 1. Node and 2. Tree Tree class will be just for user interface, and actual methods will be implemented in Node class.

    class Node():
    
        def __init__(self,val):
            self.value = val
            self.left = None
            self.right = None
    
    
        def _insert(self,data):
            if data == self.value:
                return False
            elif data < self.value:
                if self.left:
                    return self.left._insert(data)
                else:
                    self.left = Node(data)
                    return True
            else:
                if self.right:
                    return self.right._insert(data)
                else:
                    self.right = Node(data)
                    return True
    
        def _inorder(self):
            if self:
                if self.left:
                    self.left._inorder()
                print(self.value)
                if self.right:
                    self.right._inorder()
    
    
    
    class Tree():
    
        def __init__(self):
            self.root = None
    
        def insert(self,data):
            if self.root:
                return self.root._insert(data)
            else:
                self.root = Node(data)
                return True
        def inorder(self):
            if self.root is not None:
                return self.root._inorder()
            else:
                return False
    
    
    
    
    if __name__=="__main__":
        a = Tree()
        a.insert(16)
        a.insert(8)
        a.insert(24)
        a.insert(6)
        a.insert(12)
        a.insert(19)
        a.insert(29)
        a.inorder()
    

    Inorder function for checking whether BST is properly implemented.

提交回复
热议问题