Книга: Выразительный JavaScript
Деревья
Деревья
Вспомните синтаксические деревья из главы 11. Их структура удивительно похожа на структуру документа браузера. Каждый узел может ссылаться на другие узлы, у каждого из ответвлений может быть своё ответвление. Эта структура – типичный пример вложенных структур, где элементы содержат подэлементы, похожие на них самих.
Мы зовём структуру данных деревом, когда она разветвляется, не имеет циклов (узел не может содержать сам себя), и имеет единственный ярко выраженный «корень». В случае DOM в качестве корня выступает document.documentElement.
Деревья часто встречаются в вычислительной науке. В дополнение к представлению рекурсивных структур вроде документа HTML или программ, они часто используются для работы с сортированными наборами данных, потому что элементы обычно проще найти или вставлять в отсортированное дерево, чем в отсортированный одномерный массив.
У типичного дерева есть разные узлы. У синтаксического дерева языка Egg были переменные, значения и приложения. У приложений всегда были дочерние ветви, а переменные и значения были «листьями», то есть узлами без дочерних ответвлений.
То же и у DOM. Узлы для обычных элементов, представляющих теги HTML, определяют структуру документа. У них могут быть дочерние узлы. Пример такого узла — document.body
. Некоторые из этих дочерних узлов могут оказаться листьями – например, текст или комментарии (в HTML комментарии записываются между символами <!--
и -->
).
У каждого узлового объекта DOM есть свойство nodeType
, содержащее цифровой код, определяющий тип узла. У обычных элементов он равен 1, что также определено в виде свойства-константы document.ELEMENT_NODE
. У текстовых узлов, представляющих отрывки текста, он равен 3 (document.TEXT_NODE
). У комментариев — 8 (document.COMMENT_NODE
).
То есть, вот ещё один способ графически представить дерево документа:
Листья – текстовые узлы, а стрелки показывают взаимоотношения отец-ребёнок между узлами.
- Красно-черные деревья
- 14.4.1. Введение в двоичные деревья
- Глава 8. Бинарные деревья.
- 14.4.2. Функции управления деревьями
- Списки и деревья областей памяти
- Деревья и узлы
- Окна - это деревья и прямоугольники
- Деревья - это списки и их элементы
- У15.1 Окна как деревья
- У15.7 Деревья
- Деревья бинарного поиска
- Скошенные деревья