二叉树的概念不说了,搜索引擎比我说的更加清楚和完整。
下面的例子允许将各种java.lang.Comparable<T>的子类作为节点元素被添加到二叉树结构当中,并依据二叉树的中序遍历的方式将二叉树结构当中所有元素输出。
二叉树结构的Java实现类
package org.tang.binarytree; public class BinaryTree<T extends Comparable<T>> { private Node<T> root; public Node<T> getRoot() { return root; } public void setRoot(Node<T> root) { this.root = root; } public void addElement(T element){ if(element == null){ return; } Node<T> node = new Node<T>(element); if(this.root == null){ this.root = node; }else{ this.root.addChild(node); } } public void printBinaryTree(){ if(this.root == null){ System.out.println("当前为空对象,无法打印。"); return; } this.root.printNode(); } private static class Node<E extends Comparable<E>>{ private E nodeData; private Node<E> left; private Node<E> right; private Node(E nodeData){ this.nodeData = nodeData; } private void addChild(Node<E> child){ if(child == null){ return; } if(this.compareTo(child) >= 0){ if(this.left == null){ this.left = child; }else{ this.left.addChild(child); } }else{ if(this.right == null){ this.right = child; }else{ this.right.addChild(child); } } } private int compareTo(Node<E> node){ return this.nodeData.compareTo(node.nodeData); } private void printNode(){ if(this.left != null){ this.left.printNode(); } System.out.println(this.nodeData.toString()); if(this.right != null){ this.right.printNode(); } } } }
二叉树实现类的使用方式
package org.tang.binarytree; public class Client { public static void main(String[] args){ BinaryTree<Integer> bt = new BinaryTree<Integer>(); bt.addElement(101); bt.addElement(45); bt.addElement(49); bt.addElement(1); bt.addElement(20); bt.addElement(-1); bt.printBinaryTree(); BinaryTree<String> bt2 = new BinaryTree<String>(); bt2.addElement("a"); bt2.addElement("A"); bt2.addElement("z"); bt2.addElement("e"); bt2.printBinaryTree(); } }