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
    
  • 相关阅读:
    引号的区别
    QT中加载动态链接库
    QString 转换为 char *
    C++虚继承初识
    虚析构函数详解
    赋值兼容规则
    利用docker搭建spark hadoop workbench
    《用Java写一个通用的服务器程序》03 处理新socket
    《用Java写一个通用的服务器程序》02 监听器
    《用Java写一个通用的服务器程序》01 综述
  • 原文地址:https://www.cnblogs.com/remixnameless/p/13308856.html
Copyright © 2011-2022 走看看