用java语言编写的简单二叉树
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; } }