算法【排序二叉树】

二叉排序树(Binary Sort Tree),又称"二叉查找树"(Binary Search Tree),亦称"二叉搜索树"。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。

定义

一棵空树,或者是具有下列性质的二叉树:

(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;

(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;

(3)左、右子树也分别为二叉排序树;

(4)没有键值相等的结点。

class Node():
    def __init__(self,item):
        self.item = item
        self.left = None
        self.right = None

class SortTree():
    def __init__(self):
        self.root = None
    def add(self,item):
        node = Node(item)
        #树为空
        if self.root == None: 
            self.root = node
            return
        #树为非空
        cur = self.root
        while True:
            if cur.item < item:
            #插入节点的值大于根节点,将节点插入到根节点右侧
                if cur.right == None:
                    cur.right = node
                    break
                else:
                    cur = cur.right
            else:
                #将节点插入到根节点的左侧
                if cur.left == None:
                    cur.left = node
                    break
                else:
                    cur = cur.left
        
    
    def middle(self,root):
        if root == None:
            return
        self.middle(root.left)
        print(root.item)
        self.middle(root.right)

tree = SortTree()
alist = [3,8,5,7,6,2,1,4]
for i in alist:
    tree.add(i)
tree.middle(tree.root)
>>>
1
2
3
4
5
6
7
8
posted @ 2020-07-15 23:21  自己有自己的调调、  阅读(120)  评论(0编辑  收藏  举报