Рассмотрим следующий код:
public int heightOfBinaryTree(Node node)
{
if (node == null)
{
return 0;
}
else
{
return 1 +
Math.max(heightOfBinaryTree(node.left),
heightOfBinaryTree(node.right));
}
}
Я хочу знать логические причины этого кода. Как люди придумали это? Есть ли у некоторых индуктивные доказательства?
Кроме того, я думал о том, что просто делал BFS с корнем двоичного дерева в качестве аргумента, чтобы получить высоту двоичного дерева. Является ли предыдущий подход лучше, чем мой? Почему?