二叉树中的排序树,Python版

来源:互联网 发布:java九九乘法表上三角 编辑:程序博客网 时间:2024/06/14 21:13

二叉排序树

定义:二叉排序树的查找过程是,通过采取二叉链表作为二叉排序树的存储结构。一个无序的数列,可以通过二叉树

中的排序树变成一个有序数列。

中序特点:所有节点都是左小右大

                                                                  

class mybtree:#创建一个类
    class node:
        def __init__(self):
            self.data = None #给一个接收的值
            self.left = None #左边的值
            self.right = None #右边的值
        def add(self,n):
            if self.data > n.data: #self.data代表第一个值,n.data代表第二个值,当第一个值大于第二个值,走if
                if self.left is None: #第一个值的左边为空时,走if
                    self.left = n
                else:
                    self.left.add(n)
            if self.data < n.data: #self.data代表第一个值,n.data代表第二个值,当第一个值小于第二个值,走if
                if self.right is None: #第一个值的右边为空时,走if
                    self.right = n
                else:
                    self.right.add(n)
        def zhong(self): #中序
            if self.left is not None: #左边的值为空时,走if
                self.left.zhong()
            print(self.data) #输出
            if self.right is not None: #右边的值为空时,走if
                self.right.zhong()
    def __init__(self):
        self.root = None
    def add(self,data):
        n = self.node()
        n.data = data
        if self.root is None:
            self.root = n
        else:
            self.root.add(n)
    def zhong(self):
        self.root.zhong()
t = mybtree() #调用方法
t.add(11)
t.add(7)
t.add(18)
t.add(5)
t.add(8)
t.add(24)
t.add(2)
t.add(3)
t.zhong()

输出结果是:

2

3

5

7

8

11

18

24


比较绕的地方加了注释,建议读者在阅读的时候,和我写的《二叉树中的排序树,java版》综合着看,对比学习比较好




原创粉丝点击