模拟队列:
public class QueueFor <T> {
private T[] data =(T[]) new Object[20];
private int front = 0;
private int rear = 0;
public void push(T newInt) {
if( rear - front == data.length ) {
T[] datanew =(T[]) new Object[data.length*2];
for(int i = 0;i<data.length;++i) {
datanew[i] = data[ (front+i) % data.length];
}
front = 0;
rear = front + datanew.length;
data = datanew;
}
data[rear++%data.length] = newInt;
}
public T pop() {//自动装箱
if(rear == front ) {
return null;
}
T result = data[front % data.length];
front++;
return result;
}
}
模拟树:
public class TreeDemo {
public int value;
public TreeDemo lchild;
public TreeDemo rchild;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public void Out(TreeDemo root) {
if(root!=null) {
System.out.println(root.getValue());
Out(root.lchild);
Out(root.rchild);
}
}
}
测试:
public class TREETest {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9};
//System.out.println(arr.length);
TreeDemo root = new TreeDemo();
root.setValue(arr[0]);
QueueFor< TreeDemo > que = new QueueFor<TreeDemo>();
que.push(root);
for(int i=1;i<arr.length;) {
TreeDemo newTree = que.pop();
TreeDemo left = new TreeDemo();
left.setValue(arr[i]);
System.out.println(" add:left:"+left.value);
newTree.lchild = left;
que.push(left);
if(i+1<arr.length)
{
TreeDemo right = new TreeDemo();
right.setValue(arr[i+1]);
System.out.println(" add:right:"+right.value);
newTree.rchild = right;
que.push(right);
}else {
break;
}
i+=2;
}
System.out.println("~~~~~~~添加完毕,下面是输出结果~~~~~~~~~~~~~~~");
root.Out(root);
}
}