объяснять:
Глубина бинарного дерева: путь к дереву образуется от корневого узла к узлу (включая корневой и листовой узел), который по очереди проходит по листовому узлу. Длина самого длинного пути - глубина дерева.
Ширина двоичного дерева: каждый слой бинарного дерева имеет определенное количество узлов. Количество узлов в слое с наибольшим количеством узлов называется шириной двоичного дерева.
Идея: рекурсивная реализация.
1. Каждый узел можно рассматривать как корневой узел
2. Глубина корневого узла (любой узел) равен своему максимуму левой или правой глубины подтерея +1
3. Начните проходить от корневого узла. Если вы пересекаете листовый узел, глубина равен 0
// Глубина бинарного дерева общедоступной статической глубины (корень узла) {if (root == null) {return 0; } int dl = глубина (root.leftchild); int dr = глубина (root.rightchild); вернуть DL> DR? DL+1: DR+1; }2. Ширина бинарного дерева
Идея: Добавьте счетчик во время пересечения последовательности слоя, чтобы записать количество узлов в каждом слое
1. Когда каждый слой выходит из очереди, количество узлов в следующем слое на самом деле является размером () очереди.
2. В конце каждого обхода слоя сравните максимальную ширину с текущим количеством узлов и запишите максимальное значение.
публичная статическая ширина int (root узла) {if (root == null) return 0; queue <node> q = new LinkedList <node> (); Q.Add (root); int width = 1; // максимальная ширина int len = 1; // текущее число узлов на сложном Q.poll (); if (node.leftchild! = null) {q.add (node.leftchild);} if (node.rightchild! ширина: q.size ();} return width;}Суммировать
Выше приведено касается описания языка Java глубины и ширины бинарного дерева. Я надеюсь, что это будет полезно для всех. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!