How to implement a binary search tree in Python?

前端 未结 18 2115
眼角桃花
眼角桃花 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

    Here is a quick example of a binary insert:

    class Node:
        def __init__(self, val):
            self.l_child = None
            self.r_child = None
            self.data = val
    
    def binary_insert(root, node):
        if root is None:
            root = node
        else:
            if root.data > node.data:
                if root.l_child is None:
                    root.l_child = node
                else:
                    binary_insert(root.l_child, node)
            else:
                if root.r_child is None:
                    root.r_child = node
                else:
                    binary_insert(root.r_child, node)
    
    def in_order_print(root):
        if not root:
            return
        in_order_print(root.l_child)
        print root.data
        in_order_print(root.r_child)
    
    def pre_order_print(root):
        if not root:
            return        
        print root.data
        pre_order_print(root.l_child)
        pre_order_print(root.r_child)    
    

    r = Node(3)
    binary_insert(r, Node(7))
    binary_insert(r, Node(1))
    binary_insert(r, Node(5))
    

         3
        / \
       1   7
          /
         5
    

    print "in order:"
    in_order_print(r)
    
    print "pre order"
    pre_order_print(r)
    
    in order:
    1
    3
    5
    7
    pre order
    3
    1
    7
    5
    

提交回复
热议问题