二叉搜索树

来源:互联网 发布:centos 6.8安装 分区 编辑:程序博客网 时间:2024/06/03 14:55

二叉搜索树的python实现

本文给出二叉搜索树的python代码实现,关于二叉搜索树的相关知识,任意找一本关于数据结构的树一定会有详细的介绍,我就不说了。下面直接给出相关的python代码实现,包括二叉搜索树的插入,删除和查找节点的完整代码。

  • 代码实现
## Binary Search Tree#class Node(object):    def __init__(self, data):        self.data = data        self.left = None        self.right = Noneclass BinarySearchTree(object):    def insert(self, root, node):        if root is None:            return node        if root.data < node.data:            root.right = self.insert(root.right, node)        else:            root.left = self.insert(root.left, node)        return root         def delete(self, root, data):        if root is None:            return root        elif data < root.data:            root.left = self.delete(root.left, data)        elif data > root.data:            root.right = self.delete(root.right, data)        else:            if root.left is None and root.right is None:                root = None            elif root.left is None:                root = root.right            elif root.right is None:                root = root.left            else:                temp = root.right                while temp.left is not None:                    temp = temp.left                root.data = temp.data                root.right = self.delete(root.right, temp.data)        return root    def findData(self, root, data):        if root is None:            return False        elif data == root.data:            return True        elif data < root.data:            return self.findData(root.left, data)        else:            return self.findData(root.right, data)    def printTree(self, root):        if not root:            return         else:            self.printTree(root.left)            print(root.data)            self.printTree(root.right)r = Node(3)node = BinarySearchTree()nodelist = [1, 8, 5, 12, 14, 6, 15, 7, 127]for nde in nodelist:    node.insert(r, Node(nde))print('---------------BinarySearchTree------------------')node.printTree(r)print('--------------------delete-----------------------')node.delete(r, 14)node.printTree(r)print('---------------------find------------------------')flag = node.findData(r, 14)if flag:    print('We find the data!')else:    print('Cannot find the data!')