树的广度优先插入
- Tree.java
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {1,4,7,2,43,12,66,43,21,87,67,54,32,11,0,55};
Tree root = new Tree();
root.value = arr[0];
QueueTest<Tree> queue = new QueueTest<Tree>();
queue.push(root);
for(int i = 1; i < arr.length;) {
Tree newtree = queue.get();
Tree nodel = new Tree();
nodel.value = arr[ i ];
newtree.left = nodel;
queue.push(nodel);
if( i+1 < arr.length ) {
Tree noder = new Tree();
noder.value = arr[ i+1 ];
newtree.right = noder;
queue.push(noder);
}else {
break;
}
i += 2;
}
System.out.println(root);
}
}
2.Tree.java
public class Tree {
public int value;
public Tree left;
public Tree right;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Tree getLeft() {
return left;
}
public void setLeft(Tree left) {
this.left = left;
}
public Tree getRight() {
return right;
}
public void setRight(Tree right) {
this.right = right;
}
@Override
public String toString() {
return "Tree [value=" + value + ", left=" + left + ", right=" + right + "]";
}
}
3.QueueTest
public class QueueTest< T > {
private T[] data = (T[]) new Object[20];
private int start = 0;
private int end = 0;
public void push(T newint) {
if( end - start == data.length ) {
T[] datanew = (T[]) new Object[ data.length * 2 ];
for(int i = 0; i < data.length; i++) {
datanew[i] = data[ ( start + i ) % data.length ];
}
start = 0;
end = start + data.length;
data = datanew;
}
data[ end % data.length ] = newint;
end++;
}
public T get() {
if( end == start ) {
return null;
}
T result = data[start % data.length];
start++;
return result;
}
}
结果截图: