广州营销型网站优化做的很好的网站
广州营销型网站优化,做的很好的网站,网站建设人工智能开发,公司网站修改 优帮云一、查询
递归查询
寻找的值比根节点大#xff0c;遍历右子树#xff1b;
寻找的值比根节点小#xff0c;遍历左子树。 def qurey(self, node, val):if not node: # 没有节点#xff0c;返回空return Noneif node.data val:return self.qurey(node.rchild, val)el…一、查询
递归查询
寻找的值比根节点大遍历右子树
寻找的值比根节点小遍历左子树。 def qurey(self, node, val):if not node: # 没有节点返回空return Noneif node.data val:return self.qurey(node.rchild, val)elif node.data val:return self.qurey(node.lchild, val)else:return node
非递归查询
通过比较指针不断向下移动直到找到节点。 def query_no_rec(self, val):p self.rootwhile p:if p.data val:p p.rchildelif p.data val:p p.lchildelse:return preturn None
二、删除
删除操作比较难需要考虑三种情况
1、删除叶子节点直接删除
2、如果删除的节点只有一个孩子将此节点的孩子与父亲链接然后删除此节点。如果删除的根节点只有一个孩子删除根节点后要重新更新一下根节点
3、如果要删除的节点有两个孩子将其右子树的最小节点该节点最多有一个右孩子替换当前节点并删除。
代码实现 def __remove_node_1(self, node):# 情况1node是叶子节点if not node.parent:self.root Noneif node node.parent.lchild:node.parent.lchild Noneelse:node.parent.rchild Nonedef __remove_node_21(self, node):# 情况2.1node只有一个左孩子if not node.parent:self.root node.lchildnode.parent.lchild Noneelif node node.parent.lchild:node.parent.lchild node.lchildnode.lchild.parent node.parentelse:node.parent.rchild node.lchildnode.lchild.parent node.parentdef __remove_node_22(self, node):# 情况2.2node只有一个右孩子if not node.parent:self.root node.rchildelif node node.parent.lchild:node.parent.lchild node.rchildnode.rchild.parent node.parentelse:node.parent.rchild node.rchildnode.rchild.parent node.parentdef delete(self, val):if self.root: # 不是空树查询节点node self.query_no_rec(val)if not node:return Falseif not node.lchild and not node.rchild: # 1. 叶子节点self.__remove_node_1(node)elif not node.rchild: # 2.1只有一个左孩子self.__remove_node_21(node)elif not node.lchild: # 2.3 只有一个右孩子self.__remove_node_22(node)else: # 3.两个孩子都有min_node node.rchildwhile min_node.lchild:min_node min_node.lchildnode.data min_node.data# 删除min_node节点if min_node.rchild:self.__remove_node_22(node)else:self.__remove_node_1(node)
先呈现全部代码具体实现过程的详细解释我明天再补充。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91228.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!