我剛剛解決了 leetcode 上的問題,但我無法理解這段代碼中的一件事:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
return 1 max(self.maxDepth(root.left), self.maxDepth(root.right))
據我了解, root 是一個 TreeNode 物件,這就是為什么它應該具有 TreeNode 的所有屬性為val, left, right。在最后一個字串中,我們使用屬性left和right根。但是當我寫if not root.val它時,它回傳了一個錯誤Nonetype object has no attribute val。為什么在return我們可以使用的屬性root,但我們不能使用if not root.val?
uj5u.com熱心網友回復:
不是你說的。該代碼沒有使用 的屬性root,它本質上是查詢root,詢問:"Are you a TreeNode, or None?"。
如果是None,則執行return 0。
如果不是None,那么它必須是 a TreeNode,然后它將具有andleft屬性right。
我確信可能有很多TreeNodewith attribute的實體val == 0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/450459.html
標籤:Python python-3.x 功能 班级 树
