用java语言编写的简单二叉树
2024-09-18 10:19:50
package com.cjonline.foundation.evisa; public class TestTree { private int data=-1;
private TestTree lchild=null;
private TestTree rchild=null;
private int pos=-1; //记录当前已经使用数组的位置 /*
* 构造二叉树
*/
public TestTree createTree(TestTree tree,int[] data){
if(data == null || data.length<1)
return null;
tree = new TestTree();
pos++;
if(pos<data.length && data[pos]!=-1){
tree.data=data[pos];
tree.setLchild(createTree(lchild,data));//设置左孩子
tree.setRchild(createTree(rchild,data));//设置右孩子
}
return tree;
}
/*
* 前序遍历
*/
public void print(TestTree t){
if(t!=null && t.getData()!=-1){
System.out.print(" "+t.getData());
print(t.getLchild());
print(t.getRchild());
}
} @Override
public String toString() {
return "TestTree [data=" + data + "]";
}
public static void main(String[] args) {
TestTree tree = new TestTree();
int[] data = {1,2,-1,-1,3,-1,-1};
tree=tree.createTree(tree, data);
System.out.println(tree);
System.out.println(tree.getLchild());
System.out.println(tree.getRchild());
tree.print(tree);
} /**
* 获取data
* @return
*/
public int getData() {
return data;
} /**
* 设置 data
* @param data
*/
public void setData(int data) {
this.data = data;
} /**
* 获取lchild
* @return
*/
public TestTree getLchild() {
return lchild;
} /**
* 设置 lchild
* @param lchild
*/
public void setLchild(TestTree lchild) {
this.lchild = lchild;
} /**
* 获取rchild
* @return
*/
public TestTree getRchild() {
return rchild;
} /**
* 设置 rchild
* @param rchild
*/
public void setRchild(TestTree rchild) {
this.rchild = rchild;
} /**
* 获取pos
* @return
*/
public int getPos() {
return pos;
} /**
* 设置 pos
* @param pos
*/
public void setPos(int pos) {
this.pos = pos;
} }
最新文章
- Tomcat server.xml配置示例
- Android实战技巧:ViewStub的应用
- dubbo源码分析4-基于netty的dubbo协议的server
- POJ 3225 Help with Intervals --线段树区间操作
- 小白教你玩转php的闭包
- web app 自适应 弹性布局之rem
- UVA12653 Buses
- 解决fontawesome-webfont 被拦截的问题
- ubuntu杂记
- 如何在Latex上裁减图片
- [windows phone] 教你如何使地图动画缩放
- ES 2015/6 新特性汇总
- Linux 安装Anaconda 4.4.0
- Spring Cloud Eureka Server高可用注册服务中心的配置
- 如何让pl/sql developer记住密码,实现快速登录
- webpack 学习总结demo
- Redis系列一:reids的单机版安装
- server的响应数据
- 【Alpha版本发布】爬虫队长正在待命!
- mongodb在我这个C#下手眼中-01初识
热门文章
- IDEA 14.0 (默认模式) 快捷键
- FZU 1921——栀子花开——————【线段树单点更新】
- 解决The current branch is not configured for pull No value for key branch.master.merge found in config
- Checkbox与foreach循环
- div内容溢出
- python学习(四)--POST请求
- spring+springmvc+hibernate整合遇到的问题
- 我为什么不用Django而用Flask?
- mfc自动创建按钮消息处理并清除
- Kafka监控利器