python如果否则返回混乱,leetcode 669
Leetcode 669。https://leetcode.com/problems/trim-a-binary-search-tree/ 输入:根=[1,0,2],低=1,高=2。 编辑:根是一个以列表形式表示的树结构。 此代码出现错误: “非类型”对象没有属性“val”python如果否则返回混乱,leetcode 669,python,python-3.x,if-statement,return,Python,Python 3.x,If Statement,Return,Leetcode 669。https://leetcode.com/problems/trim-a-binary-search-tree/ 输入:根=[1,0,2],低=1,高=2。 编辑:根是一个以列表形式表示的树结构。 此代码出现错误: “非类型”对象没有属性“val” 如果不是root将返回,因此任何通过它的内容都不应该是None,它具有val def trimBST(self, root: TreeNode, low: int, high: int) -> TreeNode:
如果不是root
将返回,因此任何通过它的内容都不应该是None
,它具有val
def trimBST(self, root: TreeNode, low: int, high: int) -> TreeNode:
def dfs(root):
if not root:
return None
if root.val < low:
root = dfs(root.right)
if root.val > high:
root = dfs(root.left)
if root.val >= low and root.val <= high:
root.left = dfs(root.left)
root.right = dfs(root.right)
return root
return dfs(root)
def-trimBST(self,root:TreeNode,low:int,high:int)->TreeNode:
def dfs(根目录):
如果不是根目录:
一无所获
如果root.val<低:
root=dfs(root.right)
如果root.val>高:
root=dfs(root.left)
如果root.val>=低和root.val树节点:
def dfs(根目录):
如果不是根目录:
一无所获
elif root.val<低:#或如果root.val<低
root=dfs(root.right)
elif root.val>高:
root=dfs(root.left)
其他:
root.left=dfs(root.left)
root.right=dfs(root.right)
返回根
返回dfs(根目录)
我不明白为什么第一个不起作用。我认为
if
s是互斥的,因此它将在第一个if
中或通过最后三个中的任何一个到达返回点。假设根
不是None
。然后将执行以下行:
如果满足第一个条件,则不会计算第二个条件,因为它位于
elif
分支中。因此,即使dfs(root.right)
返回None
,条件root.val>high
也不会被评估。我不理解您的代码,如果root
是一个列表,它如何具有val
属性?请发一封信。
def trimBST(self, root: TreeNode, low: int, high: int) -> TreeNode:
def dfs(root):
if not root:
return None
elif root.val < low: # OR if root.val < low
root = dfs(root.right)
elif root.val > high:
root = dfs(root.left)
else:
root.left = dfs(root.left)
root.right = dfs(root.right)
return root
return dfs(root)
if root.val < low:
root = dfs(root.right)
if root.val > high:
elif root.val < low:
root = dfs(root.right)
elif root.val > high: