java初始化和构建二叉树

本文介绍了如何使用Java实现二叉树的初始化和构建,特别是完全二叉树的构建方法。通过给出的主干代码和测试代码,展示了构建过程,并通过前序遍历验证了构建的正确性。最后鼓励读者如有疑问进行交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先请看如下什么叫做完全二叉树,本人认为以完全二叉树的方法构建二叉树算比较的简单,易实现。。

下面,我们就按照构建完全二叉树的形式来构建我们的二叉树: 

主干代码为:

import java.util.ArrayList;
import java.util.List;
public class BinTree {
  private Object data;//存放当前节点的数据
  private BinTree lChild;//当前节点的左孩子
  private BinTree rChild;//当前节点的右孩纸
  private BinTree root;//这是根节点
  /**
   * 实现各个变量的get,set方法
   * @return
   */
public Object getData() {
	return data;
}
public void setData(Object data) {
	this.data = data;
}
public BinTree getlChild() {
	return lChild;
}
public void setlChild(BinTree lChild) {
	this.lChild = lChild;
}
public BinTree getrChild() {
	return rChild;
}
public void setrChild(BinTree rChild) {
	this.rChild = rChild;
}
public BinTree getRoot() {
	return root;
}
public void setRoot(BinTree root) {
	this.root = root;
}

public BinTree(Object data){
	  this.data=data;
  }
public BinTree(){
	  
  }
  
public void created(Object data[]){//初始化二叉树,将传进来的值创建为二叉树
	  List <BinTree>list=new ArrayList<BinTree>();//新建一个list集合,将数据变为各个节点
	  for (Object tempdata :data) {
		  list.add(new BinTree(tempdata));
	  }
	  root=list.get(0);//将第一个元素设置为根节点
	  /**
	   * 利用构建完全二叉树的方式构建
	   */
	  for(int i=0;i<list.size()/2;i++){  
		  if((i*2+1)<list.size()){
			  list.get(i).setlChild(list.get(i*2+1));
		  }
		  if((i*2+2)<list.size()){
			  
			  list.get(i).setrChild(list.get(i*2+2));
		  }
	  }
  }
  
  public void PreOrder(BinTree root){//利用递归实现前序遍历,输出打印结果
	  if(root!=null){
		  System.out.print(" "+root.getData());
		  PreOrder(root.getlChild());
		  PreOrder(root.getrChild());
	  }	  
  }
}

测试代码为:

public class Test{ 
 public static void main(String[] args) {
	  Object data[]={1,2,3,4,5};
	  BinTree binTree=new BinTree();
	  binTree.created(data);//创建二叉树
	  binTree.PreOrder(binTree.getRoot());//前序遍历结果
}
}

输出结果为:

我们也可以知道,1,2,3,4,5按照构建完全二叉树的方式构建,前序遍历的结果为:1,2,4,5,3。看图中的结果说明我们创建成功。

今天分享就到这里,若有疑问,请call me哦!!!! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值