Leetcode 669. Input: root = [1,0,2], low = 1, high = 2.
This code got error:
'Nonetype' object has no attribute 'val'
if not root
will return, so anything passes this should be not None
, which has a 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)
But the following works:
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)
I am confused why the first doesn't work. I think the if
s are mutually exclusive, so it will reach the return in the first if
or through any of the last three to the end.
Aucun commentaire:
Enregistrer un commentaire