Это общая операция для двоичного дерева. Краткое содержание:
Давайте установим структуру данных узла следующим образом:
Код кода копирования следующим образом:
Класс TriEnode {
Щероба;
TreeNode Left = null;
TreeNode right = null;
TREENODE (char _val) {
this.val = _val;
}
}
1. Глубина бинарной дерева
Это может быть выведено, и обнаруживается глубина левого поддерева, и можно использовать глубину правого детского дерева.
Код кода копирования следующим образом:
// Получить максимальную глубину
Public static int getmaxDepth (root treeNode) {{
if (root == null)
Возврат 0;
еще {
int left = getMaxDepth (root.left);
int right = getMaxDepth (root.richt);
Вернуть 1 + math.max (слева, справа);
}
}
2. Двоичная ширина
Используйте очередь, чтобы пересечь бинарный слой дерева. После того, как предыдущий слой завершен, все узлы в следующем слое были помещены в очередь. По аналогии, вы можете найти максимальную ширину бинарного дерева в следующем слое.
Код кода копирования следующим образом:
// Получить максимальную ширину
public static int getmaxwidth (root timeode) {{
if (root == null)
Возврат 0;
Очередь <таре
int maxwitdth = 1; // Максимальная ширина
queue.add (root);
While (true) {
int len = queue.size ();
if (len == 0)
Перерыв;
While (len> 0) {// Если текущий слой, есть узлы
Лечить t = queue.poll ();
Лен-;
if (t.left! = null)
queue.add (t.left);
if (t.right! = null)
queue.add (t.right);
}
maxwitdth = math.max (maxwitdth, queue.size ());
}
Вернуть Максвитдт;
}