Дерево бинарного сортировки также называется бинарным деревом поиска. Это либо пустое дерево, либо двоичное дерево со следующими свойствами:
① Если левый поддерек не является пустым, то значения всех узлов на левом подтерее меньше значений его корневого узла;
② Если правая поддерево не является пустым, то значения всех узлов на правом поддерею больше, чем значения его корневого узла;
③ Левые и правые подтерей также являются бинарными сортирующими деревьями соответственно.
Следующий код реализует:
import java.util.linkedlist; import java.util.queue; класс Node {public int data; Общественный узел остался; общественный узел правильно; Public int LeftMaxDistance; Public int RightMaxDistance; public node (int data) {this.data = data; this.left = null; this.right = null; }}/*** @author ty* Реализация двоичного дерева сортировки, включая вставку, пересечение по порядку, обход предварительного заказа, обход после порядка и расчет максимального расстояния всех узлов*/public class binarytree {private node root; public binarytree () {root = null; } public void insert (int data) {node newNode = new Node (data); if (root == null) root = newnode; else {node current = root; Узел родитель; while (true) {// Найти позицию вставки parent = current; if (data <current.data) {current = current.left; if (current == null) {parent.left = newNode; возвращаться; }} else {current = current.right; if (current == null) {parent.right = newnode; возвращаться; }}}}}}} // Входные числовые значения для создания двоичного дерева public void buildtree (int [] data) {for (int i = 0; i <data.length; i ++) {insert (data [i]); }}} // Метод обхода на заказ рекурсивно реализует public void inorder (node localroot) {if (localroot! = Null) {inorder (localroot.left); System.out.print (localroot.data+""); inorder (localroot.right); }} public void inOrder () {this.Inorder (this.Root); } // Метод прохождения предварительного заказа рекурсивно реализует Public void предварительного заказа (Node LocalROOT) {if (localROOT! = Null) {System.out.print (localroot.data+""); предварительный заказ (localroot.left); предварительный заказ (LocalRoot.right); }} public void preorder () {this.preorder (this.root); } // Метод прохождения постороннего заказа рекурсивно реализует Public void Poder (Node LocalROOT) {if (LocalROOT! = NULL) {PostOrder (LocalROOT.LEFT); Postorder (LocalRoot.right); System.out.print (localroot.data+""); }} public void podorder () {this.postorder (this.root); } /*** Бинарное дерево с последовательностью слоя * Если у этого узела есть узел дочернего узела, поместите его дочерний узел в хвост очереди, пока очередь не станет пустой*/ public void layertranverse () {if (this.root == null) return; Queue <node> Q = новый LinkedList <node> (); Q.Add (this.Root); while (! q.isempty ()) {node n = q.poll (); System.out.print (N.Data+""); if (n.left! = null) q.add (n.left); if (n.right! = null) q.add (n.right); }} private int maxlen = 0; private int max (int a, int b) {return a> b? a: b; } public void findmaxDistance (node root) {if (root == null) return; if (root.left == null) root.leftmaxDistance = 0; if (root.right == null) root.rightMaxDistance = 0; if (root.left! = null) findmaxDistance (root.left); if (root.right! = null) findmaxDistance (root.right); // Рассчитайте максимальное расстояние от корневого узла в левом дереве слова if (root.left! = Null) root.leftmaxDistance = max (root.left.leftmaxDistance, root.left.rightMaxDistance) +1; // Рассчитайте максимальное расстояние от корневого узла в правом дереве слова if (root.right! = Null) root.rightmaxdistance = max (root.right.leftmaxdistance, root.right.rightmaxdistance) +1; // Получить максимальное расстояние всех узлов двоичного дерева if (root.leftmaxdistance+root.rightmaxdistance> maxlen) {maxlen = root.leftmaxDistance+root.rightMaxDistance; }} public static void main (string [] args) {binaryTree bitree = new BinaryTree (); int [] data = {2,8,7,4,9,3,1,1,6,7,5}; bitree.buildtree (данные); System.out.print («Перенос бинарного дерева в порядке:»); bitree.inorder (); System.out.println (); System.out.print («Проверка предварительного заказа бинарного дерева:»); bitree.preorder (); System.out.println (); System.out.println (); System.out.println (); System.out.print («Пост-поступорный проход бинарного дерева:»); bitree.postorder (); System.out.println (); System.out.print («Проверка бинарного дерева слоя:»); bitree.layertranverse (); System.out.println (); bitree.findmaxdistance (bitree.root); System.out.println («Максимальное расстояние узлов в двоичном дереве:»+bitree.maxlen); }}Выше всего содержание этой статьи. Я надеюсь, что содержание этой статьи поможет всем, кто учится или работа. Я также надеюсь поддержать Wulin.com больше!