这次用完成的是二叉树,是一种简单的树型结构。同样使用python实现 多的不说了,上代码吧。
# -*- coding: cp936 -*- #--------------------------------------------- # # author chile # version 1.0 # date 2014-02-17 # desc 二叉树 # # # #--------------------------------------------- class bintree: def __init__(self): self.root = None # 前驱节点 def treePredecessor(self,entry): if entry.left != None: return self.maxTree(entry.left) preNode = entry.parent tempNode = entry while preNode != None and preNode.right.value != entry.value: tempNode = preNode preNode = preNode.parent return preNode #后继节点 def treeSuccessor(self,entry): if entry.right != None: return self.minTree(entry.right) preNode = entry.parent tempNode = entry while preNode != None and preNode.left.value != entry.value: tempNode = preNode preNode = preNode.parent return preNode def add(self,value): tempNode = self.root parentNode = None entry = bintree.entry(value = value) while tempNode != None: parentNode = tempNode if cmp(value,parentNode.value) < 0: tempNode = tempNode.left else: tempNode = tempNode.right if parentNode == None: self.root = entry elif cmp(value,parentNode.value) < 0: parentNode.left = entry entry.parent = parentNode else: parentNode.right = entry entry.parent = parentNode #这里删除是全部删除节点(包括所有子节点) def remove(self,value): root = self.root parentNode = None if value == root.value: root.left = None root.right = None while root != None: parentNode = root.parent if value == root.value: root.left = None root.right = None if parentNode.left != None and parentNode.left.value == value: parentNode.left = None break else: parentNode.right = None break elif cmp(value,root.value) < 0: root = root.left else: root = root.right #查找节点 def search(self,value): root = self.root while root != None and root.value != value: if cmp(value,root.value) < 0: root = root.left else: root = root.right return root #最小值的节点,其实就是找左边的叶子节点 def minTree(self,root): entry = root while entry.left != None: entry = entry.left return entry #最大值的节点 def maxTree(self,root): entry = root while entry.right != None: entry = entry.right return entry #中序遍历 def iterator(self,root): if root != None: self.iterator(root.left) print root.value self.iterator(root.right) class entry: def __init__(self, value=None): self.left = None self.right = None self.parent = None self.value = value arr = [15,5,3,12,10,13,6,7,16,20,18,23] tree = bintree() for val in arr: tree.add(val) tree.iterator(tree.root) node = tree.search(16) print node.left , node.right , node.parent.value print tree.maxTree(node).value print tree.treePredecessor(node).value print tree.treeSuccessor(node).value #print tree.maxTree() , tree.minTree()
相关推荐
在Python中,我们可以使用类来表示二叉查找树的节点,并实现插入、查找和删除等操作。例如,创建一个Node类,包含数据、左子节点和右子节点属性。接着,定义一个BST类,包含根节点,以及用于搜索、插入和删除的函数...
以下是对Python实现二叉查找树的详细解释: 首先,我们需要创建一个表示树节点的类`TreeNode`: ```python class TreeNode: def __init__(self, val): self.val = val self.left = None self.right = None ```...
二叉查找树(Binary Search Tree,BST),也称为二叉排序树,是一种特殊的二叉树数据结构。它的每个节点都包含一个键(key)、一个关联的值、一个指向左子节点的指针和一个指向右子节点的指针。在二叉查找树中,对于...
python实现二叉搜索树,包含了插入、查找和中序遍历的基本功能。
二叉搜索树(BST,Binary Search Tree),又称为二叉查找树或二叉排序树,是一种特殊的二叉树数据结构,其每个节点的值满足以下条件: 1. 节点的左子树中所有节点的值都小于该节点的值。 2. 节点的右子树中所有节点...
如果是源代码,它可能用C++、Java或Python等编程语言编写,展示了二叉查找树的插入、删除和查找等基本操作的算法实现。如果是数据文件,它可能存储了预构建的二叉查找树,用户可以直接在程序中查看和操作这个树。 ...
在Python中实现二叉搜索树,通常会定义两个类:`BinarySearchTree`和`TreeNode`。`BinarySearchTree`是整个树的容器,它有一个`TreeNode`类型的根节点,并且包含了一些基本操作,如`__init__`构造函数用于初始化空树...
本人用python实现了二叉搜索树的查找(递归与非递归)与插入(递归与非递归)和打印功能,并生成n个随机数插入二叉搜索树当中,中序遍历输出。学习数据结构的同学可以参考一下!!!
二叉搜索树(二叉查找树,Binary Search Tree)又称为排序二叉树、有序二叉树。 二叉搜索树的实现可以参考:https://blog.csdn.net/weixin_43790276/article/details/105753543 本文使用 Python 实现二叉搜索树的删除...
用python编写的简单二叉查找树,初学者可以借鉴一下
二叉排序树,又称二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构,它具有以下特性:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。这种性质使得...
递归二叉查找算法是二叉查找的一种实现方式,它利用了函数的递归调用。在递归版本中,查找过程被封装在一个函数中,该函数接受当前节点作为参数,并根据目标值与当前节点值的关系决定下一步的动作。递归版本通常更...
在Python中,我们可以用类来实现二叉搜索树。下面我们将详细介绍如何在Python中创建一个二叉搜索树,并实现插入和删除操作。 首先,我们定义一个Node类,用于表示二叉搜索树的节点: ```python class Node: def _...
本文实例讲述了Python实现查找二叉搜索树第k大的节点功能。分享给大家供大家参考,具体如下: 题目描述 给定一个二叉搜索树,找出其中第k大的节点 就是一个中序遍历的过程,不需要额外的数组,便利到节点之后,k减...
在二叉搜索树(Binary Search Tree,BST)中,第K大节点是指按照节点值排序后,位于第K位置的节点。二叉搜索树是一种特殊的二叉树,其每个节点的左子树上的所有节点的值都小于该节点的值,而右子树上的所有节点的值...
树 * 字典树 ...* 二叉查找树-从有序数组中构造二叉查找树 * 二叉查找树-从有序链表构造平衡的二叉查找树 * 二叉树-的最大深度 数组&字符串 查找排序 排列组合 动态规划 树 链表 数学 位运算 编程之美
总结起来,树表查询是一种利用树数据结构进行高效查找的方法,二叉排序树和平衡二叉树是其中重要的实现方式。它们在动态查找、插入和删除操作中展现出良好的性能,并在实际应用中广泛使用,特别是在数据库索引和搜索...