Высота двоичного дерева

Рассмотрим следующий код:

public int heightOfBinaryTree(Node node)
{
    if (node == null)
    {
        return 0;
    }
    else
    {
        return 1 +
        Math.max(heightOfBinaryTree(node.left),
            heightOfBinaryTree(node.right));
    }
}

Я хочу знать логическое обоснование этого кода. Как люди пришли к нему? индуктивное доказательство?

Более того, я подумал о том, чтобы просто создать BFS с корнем двоичного дерева в качестве аргумента для получения высоты двоичного дерева. Предыдущий подход лучше моего? Почему?

36
задан marcog 25 December 2010 в 19:53
поделиться