zoukankan      html  css  js  c++  java
  • 算法【排序二叉树】

    二叉排序树(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
    
  • 相关阅读:
    线性最大子数组的求法(二)
    高难度智力题
    职业规划
    良好的学习习惯
    毕业生面试绝招
    编写Java程序最容易犯的21种错误
    spring02
    spring_01
    用soapUI生成客户端代码
    idea创建git分支
  • 原文地址:https://www.cnblogs.com/remixnameless/p/13308856.html
Copyright © 2011-2022 走看看