Пожалуйста, прочитайте мой вопрос, прежде чем сообщать об этом как дубликат. В литературе, чтобы найти минимальную высоту дерева, общий подход состоит в следующем:Поиск минимальной высоты двоичного дерева
int minDepth(TreeNode root) {
if (root == null) { return 0;}
return 1 + Math.min(minDepth(root.left), minDepth(root.right));
}
Однако, я думаю, что он не различает между листом и узлом только с одним ребенком, и поэтому она возвращает Неверное значение. Например, если наше дерево выглядит следующим образом:
А Root
Б левого ребенок A
С является правильным ребенок B
М является левым потомком C
Эта функция возвращает одно в то время как лист 3 хмель от корня и поэтому высота мин 4.
так как это рекурсивная версия, как правило, су В литературе я думаю, что чего-то не хватает.
Может ли кто-нибудь очистить это для меня?
Я думаю, что «литература» использует определение двоичного дерева, где каждый нелистовой узел имеет ровно двое детей. Кстати, я думаю, что ваш пример можно сократить до двух узлов A и B. –
В двоичном дереве узел имеет 0, один или два ребенка. Для этого определения я вижу эту рекурсивную функцию для minHeight. – Nazgol
Тогда каково определение «минимальной высоты»? –