为了账号安全,请及时绑定邮箱和手机立即绑定

Python 3:二进制搜索树无法设置节点

Python 3:二进制搜索树无法设置节点

浮云间 2021-05-07 14:09:06
因此,我一直在从事实施二叉搜索树的此类项目。教授希望我们使私有递归同时使公众变得简单。(就像何时插入元素(50)一样,它调用私有函数recursive_insert(50,self .__ root)来解决)。我的插入函数运行没有错误,但是测试用例总是返回空,这是我的私有函数代码:class Binary_Search_Tree: class __BST_Node: def __init__(self, value):  self.value = value  self.left=None     self.right=Nonedef __init__(self):  self.__root = None  self.__height=0  self.__size=0def _in_order_str(self, root):  if root is None:    outcome= "[ ]"  elif self.__size==1:    outcome = "[ " + str(root.value) + " ]"  else:    outcome = "[ "    self._in_order_str(root.left)    outcome += str(root.value) +", "    self._in_order_str(root.right)    outcome+= " ]"  return outcomedef _recur_ins(self, val,root):  if root is None:    root=Binary_Search_Tree.__BST_Node(val)  elif root.value>val:    root.left = _recur_ins(val,root.left) #do I need self here?  elif root.value <val:    root.right = _recur_ins(val,root.right)  return root这是面向公众的:def insert_element(self, value):  self._recur_ins(value,self.__root)  self.__size+=1 我的测试用例:  def test_insertion_from_empty(self):    root=None    self.__bst.insert_element(50)    self.__bst.insert_element(30)    self.__bst.insert_element(70)    self.assertEqual('[ 30, 50, 70 ]', self.__bst.in_order())更新:我认为问题出在我的_in_order_str(self, root):方法上。我在网上发现的一般情况是:def inorder(root):    if root is not None:        inorder(root.left)        print root.key        inorder(root.right)我知道这可能是一个非常愚蠢的问题,但是我真的没有自己一个人来解决这个问题。任何帮助将不胜感激,非常感谢!!!
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信