Подсчитать количество левых узлов в BST

Учитывая BST, мне нужно найти количество левых узлов дерева.

Пример: `

          +---+
          | 3 |
          +---+
         /     \
     +---+     +---+
     | 5 |     | 2 |
     +---+     +---+
    /         /     \
+---+     +---+     +---+
| 1 |     | 4 |     | 6 |
+---+     +---+     +---+
         /
     +---+
     | 7 |
     +---+`

Ответ должен быть 4, так как (5, 1, 4, 7) - все левые узлы дерева.

Я думаю о следующем:

public int countLeftNodes() {
    return countLeftNodes(overallRoot, 0);
}

private int countLeftNodes(IntTreeNode overallRoot, int count) {
    if (overallRoot != null) {
        count += countLeftNodes(overallRoot.left, count++);    
        count = countLeftNodes(overallRoot.right, count);
    }
    return count;
}

Я знаю это неправильно, но я не знаю почему. Может ли кто-нибудь объяснить почему, а также помочь мне с ответом.

8
задан Catie 2 November 2010 в 08:22
поделиться