Skip to content

Commit 0d38873

Browse files
committed
Create sum_tree_nodes.py
1 parent 8c1948b commit 0d38873

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

sum_tree_nodes.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
def num_nodes(tree):
2+
"""Counts the number of nodes in a tree.
3+
4+
>>> class Node(object):
5+
... def __init__(self, data):
6+
... self.data=data
7+
... self.children = []
8+
... def add_child(self, obj):
9+
... self.children.append(obj)
10+
...
11+
>>> one = Node(1)
12+
>>> two = Node(2)
13+
>>> three = Node(3)
14+
>>> one.add_child(two)
15+
>>> one.add_child(three)
16+
>>> num_nodes(one)
17+
3
18+
>>> four = Node(4)
19+
>>> five = Node(5)
20+
>>> two.add_child(four)
21+
>>> two.add_child(five)
22+
>>> num_nodes(one)
23+
5
24+
>>> six = Node(6)
25+
>>> three.add_child(six)
26+
>>> num_nodes(one)
27+
6
28+
"""
29+
30+
nodes = 1
31+
32+
if tree is None:
33+
return 0
34+
35+
for child in tree.children:
36+
nodes += num_nodes(child)
37+
38+
39+
return nodes
40+
41+
42+
43+
if __name__ == "__main__":
44+
import doctest
45+
results = doctest.testmod()
46+
47+
if not results.failed:
48+
print "ALL TESTS PASSED"

0 commit comments

Comments
 (0)