[英]class attributes and recursion of function in python
我剛剛解決了 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 object,這就是為什么它應該具有 TreeNode 的所有屬性,如val
、 left
、 right
。 在最后一個字符串中, right
left
。 但是當我寫if not root.val
時它返回了一個錯誤N.netype object has no attribute val
。 為什么return
我們可以使用root
的屬性,但我們不能使用if not root.val
?
這不是你說的。 代碼沒有使用root
的屬性,它本質上是在查詢root
,詢問: "Are you a TreeNode, or None?"
.
如果為None
,則執行return 0
。
如果它不是None
,那么它一定是一個TreeNode
,那么它就會有left
和right
屬性。
我確信可能有許多TreeNode
的實例具有屬性val == 0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.