python实现递归二叉树排序

二叉树排序简介

二叉树排序是比较有意思的一种排序方法,而且也便于操作。二叉树的排序过程主要是二叉树的建立和遍历的过程。例如有一组数据"3,5,7,20,43,2,15,30",则二叉树的建立过程如下:

  • 首先将第一个数据3放入根节点
  • 将数据5与根节点中的数据3比较,由5大于3,则将5放入3的右子树中
  • 将数据7与根节点中的数据3比较,由于7大于3,则应将7放入3的右子树中,由于3已经有右儿子5,则将7与5进行比较,因为7大于5,应将7放入5的右子树中
  • 将数据20与根节点3进行比较,由于20大于3,则应将20放入3的右子树,重复比较,最终将20放到7的右子树中;
  • 将数据43与树中的节点值进行比较,最终将其放入20的右子树中
  • 以此类推与比较…

下面用例子作为真实效果模拟

例子:python用列表实现二叉树排序

实验效果:
在这里插入图片描述
实验代码:

# -*- coding:utf-8 -*-

class BTree:
    def __init__(self, value):
        self.left = None
        self.data = value
        self.right = None

    def insertLeft(self, value):
        self.left = BTree(value)
        return self.left

    def insertRight(self, value):
        self.right = BTree(value)
        return self.right

    def show(self):
        print(self.data)


def inorder(node):
    if node.data:
        if node.left:
            inorder(node.left)
        node.show()

        if node.right:
            inorder(node.right)


def insert(node, value):
    if value > node.data:
        if node.right:
            insert(node.right,value)
        else:
            node.insertRight(value)
    else:
        if node.left:
            insert(node.left, value)
        else:
            node.insertLeft(value)

if __name__ == '__main__':
    l = [3,5,7,20,43,2,15,30]
    Root = BTree(l[0])
    node = Root
    for i in range(1,len(l)):
        insert(Root,l[i])
    print('*************************')
    print(" 从小到大")
    print('*************************')
    inorder(Root)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章