【发布时间】:2021-05-05 21:48:46
【问题描述】:
我想编写一个函数来显示给定树是否为 BinarySearch。
这是我到目前为止写的:
class Node:
def _isBinary(self):
L=[]
if self.left is not None and self.right is not None:
if self.left.data>self.data or self.right.data<self.data:
L.append(1)
else:
L+=self.left._isBinary()
L+=self.right._isBinary()
else:
if self.left is not None:
if self.left.data>self.datat:
L.append(1)
else:
self.left._isBinary()
if self.right is not None:
if self.right.data<self.data:
L.append(1)
else:
self.right._isBinary()
return L
class tree:
def isBinary(self):
if self.root is None:
return
else:
return not 1 in self.root._isBinary(self.root.data)
(我只是报告了代码中感兴趣的部分) 这段代码运行良好,但是当一个数字(大于根)在树的左侧,但它是一个较小数字的孩子时,给出了错误的答案:
99
/ \
8 888
\
100
它应该给我 False,而不是它返回 True。我能做些什么? (如果可能,不完全更改我的原始代码?)
【问题讨论】:
-
请更新代码的缩进。 Python 对缩进非常敏感,python 程序员也是如此。
标签: python recursion tree binary-tree