gpt4 book ai didi

python - 这个搜索功能有什么问题?

转载 作者:行者123 更新时间:2023-12-04 09:37:43 26 4
gpt4 key购买 nike

class TreeNode:
def __init__(self, _val):
self._val = _val
self._right = None
self._left = None

def search(self, val):
if self._val == val:
value = self._val
return self
if self._right is not None:
right = self._right._val
return self._right.search(val)
if self._left is not None:
left = self._left._val
return self._left.search(val)

示例调用:
a = TreeNode(3)
b = TreeNode(2)
c = TreeNode(4)
a.search(4)

所以这只是定义了一个 treenode 类,并且 search 应该采用一个 val 并在二叉树的 ROOT 上调用时简单地搜索它。在运行测试用例时,它有时会返回正确的节点,有时会在我知道它在树中时返回 false。任何人都知道可能导致这种不一致的原因是什么?

最佳答案

a.search(3)会起作用,因为 a 的值是 3。对于其他任何事情,都不应该,因为您从未允许节点连接。对于这些节点中的每一个,至少根据给定的代码,没有左分支或右分支。它们都用 None 初始化,从不设置为其他任何东西。你应该说明根分支的左右,然后它应该可以工作。

例如,你的类(class)应该有这个:

def setLeft(self, node):
self._left = node
def setRight(self, node):
self._right = node

然后像这样使用它:
a = TreeNode(3)
b = TreeNode(2)
c = TreeNode(4)
a.setLeft(b)
a.setRight(c)
a.search(4)

当然,您应该根据您希望如何构建树来更改它。

关于python - 这个搜索功能有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62480498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com