File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
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"
You can’t perform that action at this time.
0 commit comments