class INT: def __init__(self): self.a = 0 class Node: def __init__(self, data): self.left = None self.right = None self.data = data def newNode(data): node = Node(data) return node def height(root): if (root == None): return 0; lheight = height(root.left) rheight = height(root.right) return max(lheight, rheight) + 1 def LevelOrder(root, level, count): if (root == None): return; if (level == 1 and root.left != None and root.right != None): count.a += 1 elif (level > 1): LevelOrder(root.left, level - 1, count) LevelOrder(root.right, level - 1, count) def CountFullNodes(root, kids): h = height(root) count = INT() LevelOrder(root, kids, count) return count.a if __name__ == "__main__": root = newNode(7) root.left = newNode(5) root.right = newNode(6) root.left.left = newNode(8) root.left.right = newNode(1) root.left.left.left = newNode(2) root.left.left.right = newNode(11) root.right.left = newNode(3) root.right.right = newNode(9) root.right.right.right = newNode(13) root.right.right.left = newNode(10) root.right.right.right.left = newNode(4) root.right.right.right.right = newNode(12) kids = 2 print(CountFullNodes(root, kids))