package com.link.tree;
import java.util.Queue;
import java.util.Random;
import java.util.concurrent.LinkedBlockingQueue;
/**
* @Author sunzy
* @DATE Create in 2019/9/25 18:18
*/
public class Tree {
private Node root;
public void insert(int date){
if(root==null){
root = new Node(date);
return;
}
insertToNode(root,date);
}
private void insertToNode(Node node, int date) {
if(node.getDate()<=date){
if(node.getRight()==null){
Node newNode= new Node(date);
node.setRight(newNode);
return;
}
insertToNode(node.getRight(),date);
}
else{
if(node.getLeft()==null){
Node newNode= new Node(date);
node.setLeft(newNode);
return;
}
insertToNode(node.getLeft(),date);
}
}
private void preOrder() {
Node temp=root;
printLeftNode(temp);
}
private void middleOrder() {
Node temp=root;
printMiddleNode(temp);
}
private void backOrder() {
Node temp=root;
printBackNode(temp);
}
private void printBackNode(Node temp) {
if(temp==null){
return;
}
printBackNode(temp.getLeft());
printBackNode(temp.getRight());
System.out.print(temp.getDate()+",");
}
public void levelPrint(){
Queue<Node> queue=new LinkedBlockingQueue();
if(root==null){
return;
}
queue.add(root);
Node tempnode;
while((tempnode=queue.poll())!=null){
System.out.print(tempnode.getDate()+",");
if(tempnode.getLeft()!=null){
queue.add(tempnode.getLeft());
}
if(tempnode.getRight()!=null){
queue.add(tempnode.getRight());
}
}
}
private void printMiddleNode(Node temp) {
if(temp==null){
return;
}
printMiddleNode(temp.getLeft());
System.out.print(temp.getDate()+",");
printMiddleNode(temp.getRight());
}
private void printLeftNode(Node temp) {
if(temp==null){
return;
}
System.out.print(temp.getDate()+",");
printLeftNode(temp.getLeft());
printLeftNode(temp.getRight());
}
public static void main(String[] args) {
Random rn = new Random();
Tree tree = new Tree();
for(int i=0;i<7;i++){
int date = rn.nextInt(100);
System.out.print(date+",");
tree.insert(date);
}
System.out.println();
tree.preOrder();
System.out.println();
tree.middleOrder();
System.out.println();
tree.backOrder();
System.out.println();
tree.levelPrint();
}
}
运行结果:
91,33,31,42,40,52,1,
91,33,31,1,42,40,52,
1,31,33,40,42,52,91,
1,31,40,52,42,33,91,
91,33,31,42,1,40,52,