package com.coding.basic;
public class BinaryTree {
private BinaryTreeNode root; // 根节点
public BinaryTree( ){
BinaryTreeNode node = new BinaryTreeNode();
this.root = node;
}
public boolean isEmpty(){
return this.root == null;
}
public void insert(Object o){
// 如果是第一次添加节点,就是root节点
if(root.data == null){
BinaryTreeNode bnode = new BinaryTreeNode(o, null, null);
root = bnode;
}else{
insert(o, root);
}
}
// 递归添加非root节点
private BinaryTreeNode insert(Object o, BinaryTreeNode node) {
if(node == null){
BinaryTreeNode bnode = new BinaryTreeNode(o, null, null);
return bnode;
}
if((int)o <= (int)node.data){
node.left = insert(o, node.left);
}else{
node.right = insert(o, node.right);
}
return node;
}
// 中序遍历
public void middlePrint(){
middleOrder(this.root);
}
private void middleOrder(BinaryTreeNode node) {
if(node != null){
middleOrder(node.left);
System.out.print(node.data + " ");
middleOrder(node.right);
}
}
// 前序遍历
public void prePrint(){
preOrder(this.root);
}
private void preOrder(BinaryTreeNode node) {
if(node != null){
System.out.print(node.data + " ");
preOrder(node.left);
preOrder(node.right);
}
}
// 后序遍历
public void postPrint(){
postOrder(this.root);
}
private void postOrder(BinaryTreeNode node) {
if(node != null){
postOrder(node.right);
System.out.print(node.data + " ");
postOrder(node.left);
}
}
}