Эй, эй, эй, милые милашки, я ваш хороший друг - ошибка. Сегодня я здесь, чтобы популяризировать для вас знания о Java SE. Не прячьтесь, пожалуйста, выслушайте меня и дайте мне немного полезной информации. это палец вверх. У меня так много лайков. Это даст вам мотивацию говорить более увлекательно! Итак, выработайте хорошую привычку сначала любить, а потом читать. Не перегружайтесь полезной информацией~.
🏆Эта статья включена в рубрику «Snowball Learning Java». Эта рубрика создана специально для тех, кто заинтересован в совершенствовании своих навыков Java. Она охватывает все аспекты Java-программирования и помогает освоить суть Java-разработки с нуля. Спешите следить, собирать и учиться!
Описание среды: Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8.
Эй, друзья! Если вас интересуют структуры данных, особенно двоичные деревья, вы попали по адресу! Двоичные деревья — «большая звезда» в мире структур данных. Они неотделимы от сортировки, поиска и хранения данных. Мы будем использовать его сегодня Java Этот язык поможет вам глубже понять бинарные деревья. Прочитав его, вы обнаружите, что бинарные деревья очень интересны!
Эта статья основана на Java В зависимости от языка мы покажем вам бинарные деревья с нуля. Мы подробно рассмотрим шаг за шагом от базовой структуры, общих методов, анализа исходного кода до реальных случаев, чтобы помочь вам освоить суть двоичных деревьев. Независимо от того, являетесь ли вы новичком в программировании или опытным разработчиком, вы можете получить кое-что из этой статьи. Вы готовы? Тогда давайте вместе войдем в мир бинарных деревьев!
Бинарное дерево — это просто древовидная структура, в которой каждый узел имеет не более двух дочерних узлов. Двоичные деревья являются не только основой структур данных, но и незаменимой контрольной точкой во многих вопросах алгоритмов и программирования. Понимание различных операций и сценариев применения двоичных деревьев не только улучшит ваши навыки работы с алгоритмами, но и расширит ваши способности к программированию.
Бинарное дерево Основная концепция существования будет включать в себя расширенные операции, такие как рекурсия, стек и очередь. Начнем с базового Бинарного дерево Начните со структуры,Представляет основные операции, такие как создание узлов, перемещение, вставка и удаление.,Давайте далее проанализируем его применение в деревьях поиска, сбалансированных деревьях и других областях.
Перейдем непосредственно к Бинарному. Интерпретация исходного кода части дерева позволяет вам понять Бинарное Реализация дерева имеет более глубокое понимание. мы используем Java Продемонстрировать самое распространенное Бинарное Структура и эксплуатация дерева.
// 🌲 Определить класс узла
class TreeNode {
int data;
TreeNode left, right;
public TreeNode(int data) {
this.data = data;
left = right = null;
}
}
// 🌲 Класс двоичного дерева
public class BinaryTree {
TreeNode root;
// 🌿 Вставить узел
public TreeNode insert(TreeNode root, int data) {
if (root == null) {
return new TreeNode(data);
} else {
if (data < root.data) {
root.left = insert(root.left, data);
} else {
root.right = insert(root.right, data);
}
}
return root;
}
// 🌿 Обход предзаказа
public void preOrder(TreeNode node) {
if (node != null) {
System.out.print(node.data + " ");
preOrder(node.left);
preOrder(node.right);
}
}
}
Приведенный выше код определяет простой класс двоичного дерева BinaryTree
,Содержит узлывставлятьи Обход метод предзаказа. введя этот код, вы сможете наглядно увидеть Бинарное Базовая реализация дерева.
Анализ кода:
В этой демонстрации кода я подробно проанализирую каждый код и подробно остановлюсь на идеях дизайна и логике реализации, лежащих в его основе. Я надеюсь, что подобные объяснения помогут учащимся постепенно добиться более глубокого понимания кода. Я начну со структуры кода, постепенно разбивая функции и роль каждого модуля, указывая на ключевые фрагменты кода и объясняя, как они работают вместе. Я считаю, что благодаря такому сочетанию объяснений и практики каждый студент сможет глубже понять код, освоить его как можно скорее и применить в своей учебе и работе.
Далее разберем этот абзац построчно. Java код, который определяет простое Бинарное структура дерева, включая классы узлов TreeNode
и Класс двоичного дерева BinaryTree
,Реализовано Бинарное деревоизвставлятьи Обход предзаказадействовать。
TreeNode
class TreeNode {
int data;
TreeNode left, right;
public TreeNode(int data) {
this.data = data;
left = right = null;
}
}
int data
:хранилище Узловойданные。TreeNode left
и TreeNode right
:Представляет левый дочерний узел соответственноиправый дочерний узел。public TreeNode(int data)
:Принимает целочисленный параметр data
,Инициализировать данные Должен Узловой,и будет left
и right
Указатель инициализируется null
,Указывает, что узел Должен изначально не имеет дочерних узлов.Должен TreeNode
Роль класса – определить Бинарное. Основной строительный блок дерева, каждый узел может хранить часть данных и быть подключен к своим левым и правым дочерним узлам.
BinaryTree
public class BinaryTree {
TreeNode root;
TreeNode root
:определенный Бинарное Корневой узел дерева root
。Корневой узел Бинарное Начальный узел дерева, Бинарное Все операции дерева основаны на root
начинать.insert
public TreeNode insert(TreeNode root, int data) {
if (root == null) {
return new TreeNode(data);
} else {
if (data < root.data) {
root.left = insert(root.left, data);
} else {
root.right = insert(root.right, data);
}
}
return root;
}
TreeNode root
:когдапредыдущий узел,Представляет родительский узел в предыдущей рекурсии.int data
:хотетьвставлятьизузелданные。root
для null
,Указывает, что здесь возможновставлятьновый узел。Создайте файл, содержащий data
Новый узел возвращается и используется как корневой узел предыдущего поддерева.data
меньше текущего root
Узловой data
,рекурсивный вызов insert
метод, будет data
Вставить в root
Левое поддерево .data
Вставить в root
правое поддерево .root
,Убедитесь, что корневой узел бывшего поддерева остался неизменным.preOrder
public void preOrder(TreeNode node) {
if (node != null) {
System.out.print(node.data + " ");
preOrder(node.left);
preOrder(node.right);
}
}
TreeNode node
:когдавпередтраверсприезжатьизузел。if
При оценке сначала проверьте node
Будь то для null
,если node
Нетдлянулевой,но:node.data
,Представляет узел перед доступом когда.preOrder(node.left)
Пройти левое поддерево。preOrder(node.right)
Перейдите правое поддерево.node
для null
Когда он возвращается пустым и не продолжает рекурсию.проходить preOrder
Метод, мы можем нажать Обход предзаказ очередного визита Бинарное Каждый узел в дереве и выходные данные по очереди.
Этот код реализует базовую структуру и операции Бинарного дерева:
TreeNode
Класс определен Узловой и содержит данные и указатели на дочерний элемент Узловой.BinaryTree
класс содержит Бинарное Вставка дереваи Метод обхода предзаказа。insert
Метод гарантированно двоичный дерево Характеристики поиска.preOrder
Метод обходит Бинарное в порядке предзаказа дерево, данные выходного узла.Этот код обеспечивает основные операции Бинарное дерево и может использоваться в качестве основы для более сложных структур данных и алгоритмов в.
давай попробуемвставлятьнесколькоданные,Посмотрите, как шаг за шагом строится Бинарное дерево. Предположим, мы вставляем данные в порядке: 7, 4, 9, 1, 5. Порядок вставки влияет на структуру дерева,В результате дерево выглядит следующим образом:
7
/ \
4 9
/ \
1 5
В случае проведения вы можете интуитивно понять процесс построения и метод распространения данных Бинарного дерева.
Сценарии применения Бинарного дерева очень широки, например:
Эти сцены позволяют нам увидеть силу Бинарного дерева.
Ниже мы представляем Бинарное деревосерединаизкакой-то тяжелыйхотетьметод,включатьвставлять、траверси Находить。
Метод вставки используется для вставки новых узлов данных в дерево. Правила вставки данных таковы: значения, меньшие корневого узла, помещаются в левое поддерево, а значения, большие, чем корневой узел, помещаются в правое поддерево.
Бинарное дерево Есть три основныххотетьизтраверс Способ:впередпоследовательность、средний порядоки Послесловиетраверс。Неттакой жетраверс Способ会得приезжать Неттакой жеизузел访问顺последовательность。
Далее пишем простой main
Методы проверки функциональности вставки и обхода.
public class Main {
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
tree.root = tree.insert(tree.root, 7);
tree.insert(tree.root, 4);
tree.insert(tree.root, 9);
tree.insert(tree.root, 1);
tree.insert(tree.root, 5);
System.out.println("Обход предзаказарезультат:"); tree.preOrder(tree.root);
}
}
При выполнении приведенного выше кода ожидаемый результат Обхода предзаказа должен быть:
7 4 1 5 9
Таким образом, мы можем ясно увидеть последовательность доступа Узловой в Бинарное дерево.
существовать main
метод, мы создаем BinaryTree
Экземпляры, вставленные по очереди 5 узлы。проходить preOrder
Метод проверки того, что вставка и обход предварительного заказа работают должным образом. Весь код логически краток и прост для понимания.
Мы систематически изучили вышеуказанный контент Java Язык в Бинарном Основная концепция и реализация дерева. Бинарное деревотяжелыйхотетьизданныеструктура,Его освоение не только улучшает качество кода.,Это также может помочь вам освоиться с вопросами по алгоритмам.
Бинарное Хотя дерево кажется простым, оно имеет широкое применение и множество знаний. Мы из Бинарного Исходя из основного определения дерева, Java Примеры кода проведут вас шаг за шагом. Изучение структур данных не происходит в одночасье. Оно требует постоянной практики и понимания практических приложений. Надеюсь, эта статья поможет вашему Бинарному дерево Learning Paths помогает!
Обучение программированию похоже на восхождение на гору,Каждый шаг имеет значение. Ну давай же,продолжайте исследовать,Непрерывный прогресс,Бинарное дерево — это лишь маленькое начало вашего пути в программировании!
Если вы студент компьютерного факультета,Вы все еще интересуетесь программированием?,Рекомендуется идти прямо без каких-либо сомнений.из Изучите эту колонку「Снежок изучает Java」,грибок-ошибка,Все студенты, изучающие эту рубрику,можно приобрести необходимые знания и навыки,Самый быстрый способ начать программировать на Java в Интернете.,как снежный ком,Роллинг все больше и больше,Экспоненциальное улучшение.
Нелегко кодировать слова,если эта статья вам полезна,помощьгрибок-ошибка Ну давай жеТри клика подряд (подписаться, поставить лайк, собрать) , ваша поддержка — самая большая мотивация для меня продолжать писать, делиться знаниями и распространять технологии. В то же время, я также рекомендую всем обратить внимание на мой хардкорный паблик-аккаунт: «Дом чудес в круге обезьян». Получите полезную информацию о бактериях-жуках из первых рук. Вы не только сможете узнать больше технических вопросов, но также бесплатно получите последние вопросы для интервью с крупными заводами BAT и 4000G. Технические книги в формате PDF, десятки тысяч резюме/шаблонов PPT, технические статьи, документы Markdown и другие массивные материалы — у меня есть все, что вам нужно!
Я педераст, CSDN | наггетсы | Тенсент Облако | Облако Huawei | Алибаба Облако | 51CTO | InfoQ Эксперты общественных блогов, 30 лучших звезд блогов, 40 самых популярных авторов года, 12 лучших блоггеров года 51CTO, авторы по контракту на таких платформах, как наггетсы, Облако Huawei | Алибаба Облако| Тенсент Облако Ждите качественных создателей из сообщества,Общее количество поклонников во всей сети30w+ ; Хардкорный публичный аккаунт WeChat «Ape Circle Wonder House» приглашает вас присоединиться! Бесплатная проституция, последние вопросы для интервью с интернет-компанией BAT, 4000G Электронные книги в формате PDF, шаблоны резюме и другие массивные материалы.
--End