ОК, это предложение требует больше символов, чем я могу уместить в поле для комментариев.Стивен не верит, что знание глубины узла в дереве полезно.Я думаю, что это.Я был неправ в прошлом и уверен, что буду неправ в будущем, поэтому я попытаюсь объяснить, как эта идея работает, чтобы не ошибаться в настоящем.Если я, я прошу прощения заранее.Я почти уверен, что получил его на одном из моих курсов по Алгоритмам и структурам данных, используя книгу CLR.Прошу прощения за любые ошибки в примечаниях или номенклатуре, я давно не изучал этот материал.
Цитирование wikipedia , " полное двоичное дерево - это двоичное дерево, в котором каждыйУровень, за исключением, возможно, последнего, полностью заполнен, и все узлы расположены как можно левее."
Мы рассматриваем полное дерево с любой степенью ветвления (где двоичное дерево имеет степень ветвленияиз двух).Кроме того, мы считаем, что наши узлы имеют «позиционное значение», которое представляет собой порядок позиционного значения (сверху вниз, слева направо) узла.
Теперь, если нам дано позиционное значение, мы можем найти узел следующим образом.Возьмем log_base_n позиционного значения искомого элемента (для этого нам понадобится целое число).Пройдите вниз от корня много раз, минус один.Теперь начните просматривать все дочерние узлы на этом уровне.Ваш узел, который вы ищете, будет в этом наборе.
Это попытка объяснить дополнительную часть определения википедии:
"This depth is equal to the integer part of log2(n) where n
is the number of nodes on the balanced tree.
Example 1: balanced tree with 1 node, log2(1) = 0 (depth = 0).
Example 2: balanced tree with 3 nodes, log2(3) = 1.59 (depth=1).
Example 3: balanced tree with 5 nodes, log2(5) = 2.32
(depth of tree is 2 nodes)."
Это полезно, потому что вы можете просто пройтидо этого уровня, а затем начать смотреть вокруг.Полезно и важно знать глубину, на которой расположен ваш узел, поэтому вы можете начать искать там, а не смотреть в начале.Если вы не знаете, на каком уровне дерева вы находитесь, вы начнете просматривать все узлы последовательно.
Вот почему я думаю, что полезно знать глубину искомого узла.
Это немного странно, поскольку наличие "позиционного значения" - это не то, о чем мы обычно заботимся в дереве.Я могу понять, почему Стив думал об этом в терминах массива, поскольку позиционные значения присущи массивам.
- Брайан Дж. Стинар -