java实现二叉树的创建以及遍历

来源:互联网 发布:淘宝的全球购是真货吗 编辑:程序博客网 时间:2024/05/17 18:14
public class BinaryTree {


private Node rootNode;
public static void main(String[] args) {
int[] datas = {4,8,2,9,10,23,11,0,67}; 
BinaryTree bt=new BinaryTree();
bt.initTree(datas[0]);
for(int i=1;i<datas.length;i++){
bt.createTree(bt.rootNode, datas[i]);
}
bt.beforeTraversal(bt.rootNode);
bt.midTraversal(bt.rootNode);
bt.afterTraversal(bt.rootNode);


}

/**
* 初始化树的根节点
*/
private void initTree(int data){
rootNode=new Node();
rootNode.data=data;
}

/**
* 构造二叉树
*/
private void createTree(Node node, int data){
if(data<node.data){
if(node.lchild==null){//当前元素插入左孩子节点
Node lnode=new Node();
lnode.data=data;
node.lchild=lnode;
}else{//继续递归查找左子树
createTree(node.lchild,data);
}
}else if(data>node.data){
if(node.rchild==null){//当前元素插入右孩子节点
Node rnode=new Node();
rnode.data=data;
node.rchild=rnode;
}else{//继续递归查找右子树
createTree(node.rchild,data);
}
}
}

/**
* 前序遍历
* @param node
*/
private void beforeTraversal(Node node){
if(node !=null){
System.out.println(node.data);//先遍历根节点
beforeTraversal(node.lchild);//遍历左子树
beforeTraversal(node.rchild);//遍历右子树
}
}

/**
* 中序遍历
* @param node
*/
private void midTraversal(Node node){
if(node !=null){
midTraversal(node.lchild);//先遍历左子树
System.out.println(node.data);//遍历根节点
midTraversal(node.rchild);//遍历右子树
}
}

/**
* 后序遍历
* @param node
*/
private void afterTraversal(Node node){
if(node !=null){
afterTraversal(node.lchild);//先遍历左子树
afterTraversal(node.rchild);//再遍历右子树
System.out.println(node.data);//再遍历根节点
}
}


}


class Node{
int data; //元素
Node lchild; //左孩子
Node rchild; //右孩子
}
原创粉丝点击