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