如何解决如何使用DFS在这里工作的最大深度的python代码?
class Node:
def __init__(self,val,left=None,right=None):
self.val = val
self.left = left
self.right = right
def max_depth(root):
return root and 1 + max(max_depth(root.left),max_depth(root.right)) or 0
if __name__ =="__main__":
def build_tree(nodes):
val = next(nodes)
if not val or val == 'x': return
cur = Node(int(val))
cur.left = build_tree(nodes)
cur.right = build_tree(nodes)
return cur
root = build_tree(iter(input().split()))
print(max_depth(root))
在这里给出正确的答案。但是我不明白 max_depth 函数在这里如何工作。更具体地说,此处的“与”和“或”运算。
解决方法
此表达式:
root and 1 + max(max_depth(root.left),max_depth(root.right)) or 0
等效于:
1 + max(max_depth(root.left),max_depth(root.right)) if root else 0
这是因为and
会在第一个操作数为假时返回第一个操作数,如果第一个操作数为真,则返回第二个操作数。 or
操作数为真时将返回其第一个操作数,而第一个为假时将返回其第二个操作数。
您还可以使用单独的return
语句来写得更详细:
if root:
return 1 + max(max_depth(root.left),max_depth(root.right))
else:
return 0
,
and
用于检查根是否不是None
。就像这样做:
0 if root is None else 1 + max(max_depth(root.left),max_depth(root.right))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。