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; //右孩子
}
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; //右孩子
}
阅读全文
0 0
- java实现二叉树的创建以及遍历
- java实现二叉树的创建以及遍历
- Java 二叉树的实现以及遍历
- java二叉树创建以及遍历
- java二叉树创建以及遍历
- 二叉树的创建以及遍历
- C++ 二叉树的创建以及遍历
- 二叉树的创建以及遍历
- 二叉树的创建以及遍历方法
- 二叉树的存储、创建以及遍历
- 二叉树的创建以及各种遍历
- java实现二叉树的建立以及前序中序后序遍历
- (学习java)线索二叉树的实现以及遍历
- Java实现二叉树的创建、递归/非递归遍历
- Java实现二叉树的创建和遍历
- java实现二叉树的创建及遍历
- java实现二叉树的创建及5种遍历
- Java实现二叉树的创建、删除、遍历
- 16.ranlib
- akka学习教程(八) Actor中的Future-询问模式
- python---基本socket编写
- 过山车||HDU2063
- 行列式的计算
- java实现二叉树的创建以及遍历
- hdu 2090 算菜价(水到不能再水!)
- 数位dp模板
- 百度之星复赛--Valley Numer----数位dp
- 前端常用知识
- 2017最新PHP初级经典面试题目汇总(下篇)
- linux 基础 —— 网络管理
- spark学习-SparkSQL--13-java版JavaRDD与JavaPairRDD的互相转换
- C++面试题之哪些函数不能声明为虚函数