tôi mới lập trình và đang cố gắng tính toán độ sâu của cây trăn. Tôi tin rằng lỗi của tôi là bởi vì chiều sâu là một phương thức của lớp Node và không phải là một hàm bình thường. Tôi đang cố gắng tìm hiểu oop và hy vọng sẽ sử dụng một phương pháp. Đây có thể là một lỗi ong mới ... Đây là mã của tôi:độ sâu của một cây trăn cây
class Node:
def __init__(self, item, left=None, right=None):
"""(Node, object, Node, Node) -> NoneType
Initialize this node to store item and have children left and right.
"""
self.item = item
self.left = left
self.right = right
def depth(self):
if self.left == None and self.right == None:
return 1
return max(depth(self.left), depth(self.right)) + 1
i receive this error:
>>>b = Node(100)
>>>b.depth()
1
>>>a = Node(1, Node(2), Node(3))
>>>a.depth()
Traceback (most recent call last):
File "C:\Program Files\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 1, in <module>
# Used internally for debug sandbox under external interpreter
File "C:\Program Files\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 15, in depth
builtins.NameError: global name 'depth' is not defined
+1 để trực tiếp khắc phục sự cố của bạn. –
Để tham khảo trong tương lai, tôi tin rằng 'ong mới' được viết là' newbie', nếu tôi không nhầm. –
Trực giác là một phần chính xác (gọi 'depth()' là một phương thức giải quyết vấn đề), nhưng phần nào không đầy đủ. Nguyên nhân gốc giải thích tại sao bạn không thể truy cập phương thức từ bên trong chính nó nhưng bạn có thể với một hàm bình thường là một chi tiết liên quan đến cách thức phạm vi và lớp định nghĩa hoạt động trong Python. Khi bạn gọi một hàm mức mô-đun thông thường, phạm vi "toàn cục" sẽ là mô-đun được định nghĩa trong đó, chứa hàm này. Tuy nhiên, phạm vi mà các phương thức được định nghĩa có thể được coi là bị loại bỏ sau khi đối tượng kiểu được tạo. – millimoose