public class Node {
public Node right;
public Node left;
public int data;
public Node(int data) {
this.data = data;
}
public Node() {
}
}
/**
* 二叉树方法:
* (1)遍历:
* 1. 前序遍历
* 2. 中序遍历
* 3. 后序遍历
* 4. 层次遍历
* (2)插入
* (3)二分查找
* (4)删除
* (5)返回树的深度: BFS和递归
*
*/
public class Tree {
private Node root;
private int length; //节点数
public Tree() {
root = null;
this.length = 0;
}
public int getLength() {
return length;
}
public boolean isEmpty(){
return root == null;
}
/**
* 插入
* @param data
*/
public void insert(int data){
Node newNode = new Node(data);
//第一种情况: 第一个节点
if (isEmpty()){
root = newNode;
length++;
return ;
}
Node rootNode = root;
while (true){
if (data > rootNode.data){
if (rootNode.right == null){
rootNode.right = newNode;
length++;
return ;
}
rootNode = rootNode.right;
}else {
if (rootNode.left == null){
rootNode.left = newNode;
length++;
return ;
}
rootNode = rootNode.left;
}
}
}
public void print(){
System.out.println("前序遍历: ");
preOrder(root);
System.out.println("中序遍历: ");
inOrder(root);
System.out.println("后序遍历: ");
postOrder(root);
}
/**
* 前序遍历
* @param node
*/
private void preOrder(Node n