Java-二叉树算法
二叉树算法的排序规则:
1、选择第一个元素作为根节点
2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)
二叉树算法的核心类,此类只提供了添加和打印输出的方法
package com.lym.binaryTree; /** * 二叉树算法的排序规则: * 1、选择第一个元素作为根节点 * 2、之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树 * 3、最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右) * * @author Administrator * */ public class BinaryTree { private Node root;// 根节点 // 添加节点,提供外部访问 public void add(int data) { if (root == null) { root = new Node(data); } else { root.addNode(data); } } // 输出节点,提供外部访问 public void print() { if (root != null) { root.printNode(); } } // 树枝节点 class Node { private Node leftNode; private Node rightNode; private int data; public Node(int data) { this.data = data; } // 添加节点 public void addNode(int data) { if (this.data > data) {// 添加在左面 if (this.leftNode == null) { this.leftNode = new Node(data); } else { this.leftNode.addNode(data); } } else if (this.data <= data) { if (this.rightNode == null) { this.rightNode = new Node(data); } else { this.rightNode.addNode(data); } } } // 输出所有节点 //中序遍历 public void printNode() { if (this.leftNode != null) { this.leftNode.printNode(); } System.out.print(this.data + " ");//输出语句放最后就是后续遍历 if (this.rightNode != null) { this.rightNode.printNode(); } } } }
二叉树的测试类
package com.lym.binaryTree; /** * 二叉树测试类 * * @author Administrator * */ public class BinaryTreeDemo { public static void main(String[] args) { BinaryTree bt = new BinaryTree(); bt.add(3); bt.add(5); bt.add(2); bt.add(1); bt.add(4); bt.add(8); bt.add(10); bt.add(13); bt.add(6); bt.add(9); bt.print(); } }