from collections import namedtuple def count(node): counter = 0 if node[0] is None and node[1] is None: counter += 1 return counter if node[0] is not None: print(node, "------ left") counter += count(node[0]) if node[1] is not None: print(node, "------ right") counter += count(node[1]) return counter if __name__ == "__main__": Node = namedtuple("Node", ["left", "right"]) tree = Node(None, Node(Node(None, None), Node(None, None))) tree2 = Node(left=Node(left=None, right=None), right=Node(left=None, right=None)) print(count(tree)) # 2 print(count(tree2)) # 2