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

Class Node

data_structures/binary_tree/is_sum_tree.py:14–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12
13@dataclass
14class Node:
15 data: int
16 left: Node | None = None
17 right: Node | None = None
18
19 def __iter__(self) -> Iterator[int]:
20 """
21 >>> root = Node(2)
22 >>> list(root)
23 [2]
24 >>> root.left = Node(1)
25 >>> tuple(root)
26 (1, 2)
27 """
28 if self.left:
29 yield from self.left
30 yield self.data
31 if self.right:
32 yield from self.right
33
34 def __len__(self) -> int:
35 """
36 >>> root = Node(2)
37 >>> len(root)
38 1
39 >>> root.left = Node(1)
40 >>> len(root)
41 2
42 """
43 return sum(1 for _ in self)
44
45 @property
46 def is_sum_node(self) -> bool:
47 """
48 >>> root = Node(3)
49 >>> root.is_sum_node
50 True
51 >>> root.left = Node(1)
52 >>> root.is_sum_node
53 False
54 >>> root.right = Node(2)
55 >>> root.is_sum_node
56 True
57 """
58 if not self.left and not self.right:
59 return True # leaf nodes are considered sum nodes
60 left_sum = sum(self.left) if self.left else 0
61 right_sum = sum(self.right) if self.right else 0
62 return all(
63 (
64 self.data == left_sum + right_sum,
65 self.left.is_sum_node if self.left else True,
66 self.right.is_sum_node if self.right else True,
67 )
68 )
69
70
71@dataclass

Callers 2

build_a_treeMethod · 0.70
build_a_sum_treeMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected