以下は、実行時間O(n)で可能な反復解法である：

```python
def count_nodes_iterative(root):
  if not root:
    return 0
  stack = [ root ]
  count = 0
  while len(stack) > 0:
    node = stack.pop()
    if not node:
      continue
    stack += [node.left, node.right]
    count += 1
  return count
```

この実装では、まだカウントされていないノードは全て変数 `stack` に格納される。カウントを行う際には、現在のノードの子ノードが格納されるので、カウントと木の探索が同時に行われる。
Folgendes ist eine mögliche iterative Lösung mit Laufzeit O(n):

```python
def count_nodes_iterative(root):
  if not root:
    return 0
  stack = [ root ]
  count = 0
  while len(stack) > 0:
    node = stack.pop()
    if not node:
      continue
    stack += [node.left, node.right]
    count += 1
  return count
```

Bei dieser Implementierung werden alle Knoten, die noch nicht gezählt wurden in einer Variablen `stack` gespeichert. Beim Zählen werden die Kinder des aktuellen Knotens gespeichert, so dass Zählung und Erkundung des Baumes gleichzeitig passieren.