当前位置: 首页 > news >正文

电子商务网站主要功能电销crm客户管理系统

电子商务网站主要功能,电销crm客户管理系统,杭州软件开发的公司,国内做网站的龙头企业数据结构之二叉查找树的代码实现 定义 二叉查找树#xff08;Binary Search Tree#xff0c;BST#xff09;#xff0c;是一种内存中特殊的树类型的存储结构#xff0c;它允许对存储在其结点的数据进行增删改查#xff0c;或者用作动态的数据集合#xff0c;或是通过k…数据结构之二叉查找树的代码实现 定义 二叉查找树Binary Search TreeBST是一种内存中特殊的树类型的存储结构它允许对存储在其结点的数据进行增删改查或者用作动态的数据集合或是通过key查找对应value的查找表 创建结点 设计可以使用顺序表或链表实现二叉树这里使用链表实现在学习堆时再使用顺序表实现 使用链表结点设计 class Node:def __init__(self, keyNone, valueNone):self.key keyself.value valueself.left Noneself.right Noneleft和right分别代表左右子结点key是可比较的用于进行顺序匹配value储存值 实现的功能 构造方法__init__()root为根结点默认为Nonelen为树的大小 size()获取BST中元素个数put(_key, _value)向树中添加键值对元素元素按key排序返回添加元素后的新树get(_key)通过键获取树中对应元素的值delete(_key)通过键删除树中对应的元素min_key()获取最小的keymax_key()获取最大的key Python代码实现 import operatorclass Node:def __init__(self, keyNone, valueNone):self.key keyself.value valueself.left Noneself.right Noneclass BinarySearchTree:def __init__(self):self.root Noneself.len 0def size(self):return self.lendef put(self, _key, _value):Put an element into this tree and generate a new BSTdef put_into(node, _key, _value):Adjust position of new inserted nodeby BST character:left root rightif not node:self.len 1return Node(_key, _value)if operator.lt(_key, node.key):node.left put_into(node.left, _key, _value)elif operator.gt(_key, node.key):node.right put_into(node.right, _key, _value)elif operator.eq(_key, node.key):node.value _valuereturn nodeself.root put_into(self.root, _key, _value)return self.rootdef get(self, _key):Get a value responding to the given _key from this treedef get_value_by_key(node, _key):if not node:returnif operator.lt(_key, node.key):return get_value_by_key(node.left, _key)elif operator.gt(_key, node.key):return get_value_by_key(node.right, _key)else:return node.valuereturn get_value_by_key(self.root, _key)def delete(self, _key):Delete a node responding to the giving key(_key)def delete_value_by_key(node, _key):if not node:returnif operator.lt(_key, node.key):node.left delete_value_by_key(node.left, _key)elif operator.gt(_key, node.key):node.right delete_value_by_key(node.right, _key)else:self.len - 1to_delete_node nodeif node self.root:self.root Nonereturn# node Noneif not to_delete_node.left:return to_delete_node.rightelif not to_delete_node.right:return to_delete_node.leftelse:min_right_tree to_delete_node.rightpre min_right_treewhile min_right_tree.left:pre min_right_treemin_right_tree min_right_tree.leftpre.left Nonemin_right_tree.left to_delete_node.leftmin_right_tree.right to_delete_node.rightreturn min_right_treereturn delete_value_by_key(self.root, _key)def min_key(self):Find the minimum keydef min_node(node):while node.left:node node.leftreturn nodereturn min_node(self.root).keydef max_key(self):Find the maximum keydef max_node(node):while node.right:node node.rightreturn nodereturn max_node(self.root).keydef max_depth(self):Calculate the max depth of this treedef max_depth(node):max_left, max_right 0, 0if not node:return 0if node.left:max_left max_depth(node.left)if node.right:max_right max_depth(node.right)return max(max_left, max_right) 1return max_depth(self.root)主要代码解释 put()插入元素使用递归按照从上到下从左到右的顺序依次和插入的元素比较 1.如果当前树中没有任何一个结点则直接把新结点当做根结点使用并返回2.如果当前树不为空, 则从根结点开始与传入的元素的key进行比较 2.1如果新结点的key小于当前结点的key ,则继续找当前结点的左子结点; 2.2如果新结点的key大于当前结点的key ,则继续找当前结点的右子结点; 2.3如果新结点的key等于当前结点的key ,则树中已经存在这样的结点,替换该结点的value值即可。 delete()删除元素跟插入元素类似也是使用递归寻找的顺序按照从上到下从左到右的顺序依次和插入的元素比较如果找到key相等的元素则做删除动作 如果找到key相等的元素则只需要往这个结点的右子树的左边最深处寻找根据排序的规律找到的元素与key相等的元素交换位置即可 代码测试 if __name__ __main__:BST BinarySearchTree()BST.put(e, 5)BST.put(b, 2)BST.put(g, 7)BST.put(a, 1)BST.put(d, 4)BST.put(f, 6)BST.put(h, 8)BST.put(c, 3)print(fThe size of this binary tree now is {BST.size()}\n)key aprint(f\nGet element by key[{key}]: {BST.get(key)})key bBST.delete(key)print(fAfter deleting an node ({key}), the size of this tree: {BST.size()})print(fGet the deleted value (key[{key}]), it should be none: {BST.get(key)})print(fGet the value (key[{a}]), it should be {1}: {BST.get(a)})测试结果 The size of this binary tree now is 8Get element by key[a]: 1 After deleting an node (b), the size of this tree: 7 Get the deleted value (key[b]), it should be none: None Get the value (key[a]), it should be 1: 1Process finished with exit code 0
http://www.zqtcl.cn/news/849469/

相关文章:

  • 在线工具网站网站建设公司ejiew
  • 个人搭建网站教程王牌网站做代理
  • 网站地图什么意思电子商务营销推广
  • 手机排行榜网站教育平台网站开发
  • 佛山市顺德区建设局网站萧山网站建设
  • 合肥百度团购网站建设怀化网站开发
  • 网站建设ppt模板彩票网站开发dadi163
  • 网站建设4435建筑设计一般用什么软件
  • 河南网站建设重庆森林台词
  • 网站一直没收录雄安做网站
  • 全国网站直播平台被摧毁响应是网站怎么做
  • 衡阳建设网站做网站和app多少费用
  • 怎么做付费网站蚌埠网站建设专业公司哪家好
  • 学网站建设需要多长时间成都网站建设定制开发服务
  • 建站宝盒后台深圳建网站公司怎么选择
  • 什么是大型门户网站网站建设的经验之谈
  • 网站建站网站设计网站制作书生
  • 租号网站是怎么做的wordpress 快讯功能
  • 口碑好的盐城网站建设wordpress课堂主题
  • 网站品牌打造wordpress插件有木马
  • 网站开发与软件研发有什么区别查网站域名备案查询系统
  • 硬盘做免费嗳暧视频网站黄冈免费网站推广平台汇总
  • node做网站怎么知道蜘蛛来过怎么学网站设计
  • 青海省建设厅网站公示公告简单建站
  • 手机网站用什么后台wordpress 百度蜘蛛
  • 网站文章伪原创怎么做手机网站 程序
  • 网站建设每月工作多少开发小程序的目的
  • 社区网站建设方案pptwordpress用户名在哪看
  • 浙江企业响应式网站建设公司简介如何写
  • 自己做静态网站的步骤店面设计在线