MCPcopy Create free account
hub / github.com/TheAlgorithms/Python / Node

Class Node

data_structures/binary_tree/diameter_of_binary_tree.py:12–51  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10
11@dataclass
12class Node:
13 data: int
14 left: Node | None = None
15 right: Node | None = None
16
17 def depth(self) -> int:
18 """
19 >>> root = Node(1)
20 >>> root.depth()
21 1
22 >>> root.left = Node(2)
23 >>> root.depth()
24 2
25 >>> root.left.depth()
26 1
27 >>> root.right = Node(3)
28 >>> root.depth()
29 2
30 """
31 left_depth = self.left.depth() if self.left else 0
32 right_depth = self.right.depth() if self.right else 0
33 return max(left_depth, right_depth) + 1
34
35 def diameter(self) -> int:
36 """
37 >>> root = Node(1)
38 >>> root.diameter()
39 1
40 >>> root.left = Node(2)
41 >>> root.diameter()
42 2
43 >>> root.left.diameter()
44 1
45 >>> root.right = Node(3)
46 >>> root.diameter()
47 3
48 """
49 left_depth = self.left.depth() if self.left else 0
50 right_depth = self.right.depth() if self.right else 0
51 return left_depth + right_depth + 1
52
53
54if __name__ == "__main__":

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected