python实现二叉排序树的创建

二叉排序树的创建很简单,即选定根节点后,将所有小于根节点的放到他的左边,大于的放到右边,再迭代处理一手

class BTNode:
    def __init__(self, data, left, right):
        self.data = data
        self.left = left
        self.right = right


class BTree:

    def __init__(self, root):
        self.root = root

    def insert(self, data):
        self.insertNode(data, self.root)

    def insertNode(self, data, btNode):
        if btNode is None:      # Reach the edge node, create a new node
            btNode = BTNode(data, None, None)

        elif data < btNode.data:        # search for the appropriate position
            if btNode.left is None:
                btNode.left = BTNode(data, None, None)

                return
            else:
                self.insertNode(data, btNode.left)

        elif data > btNode.data:        # search for the appropriate position
            if btNode.right is None:
                btNode.right = BTNode(data, None, None)

                return
            else:
                self.insertNode(data, btNode.right)

    def printBTreeImpl(self, btNode):
        if btNode is None:
            return

        self.printBTreeImpl(btNode.left)
        print(btNode.data)
        self.printBTreeImpl(btNode.right)

    def printBTree(self):
        self.printBTreeImpl(self.root)


if __name__ == '__main__':

    import numpy as np

    lis = [5, 8, 3, 1, 4, 9, 7]

    root = BTNode(np.median(lis), None, None)

    if np.median(lis) in lis:
        lis.pop(int(np.median(lis)))

    bTree = BTree(root)     # Use the median as the root node to balance the binary tree

    for i in lis:
        bTree.insert(i)

    bTree.printBTree()

  • 二叉排序树的建立过程是nlogn
  • 二叉排序树的查找是logn
  • 二叉排序树中根遍历得到有序的结果

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值