题目:int values[] = {80099, 16114, 63108, 25032, 31044, 59069, 39099, 13110, 34101, 66120,19116, 72105, 70045, 38032, 41110, 12105, 75110, 27105, 1105, 9114,67117, 20101, 21100, 11032, 79046, 32112, 5111, 6117, 45116, 22032,61097, 65120, 49110, 15101, 82109, 50103, 54110, 17101, 46032, 4121,
76097, 7032, 57105, 2102, 58044, 8097, 44099, 73064, 81111, 43097,30112, 14116, 60109, 74104, 77105, 35097, 64058, 29112, 55032, 33108,71108, 40111, 47088, 52117, 56076, 68097, 37101, 78114, 24110, 53097,69110, 48105, 18115, 26072, 3032, 42116, 62105, 51120, 28065, 10101,23105, 36115}
这样一个数组,操作如下。
1.首先将数组的内容有序的存入二叉树中。
2.然后由小到大遍历二叉树。
3.把遍历到的数值取后三位转化成字符串输出。
代码如下所示:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.TreeSet;
public class Bintree {
public Bintree left;
public Bintree right;
public Bintree root;
private Object data;
public List<Bintree> datas;
public Bintree(Bintree left,Bintree right,Object data) {
this.left=left;
this.right=right;
this.data=data;
}
public Bintree(Object data) {
this(null,null,data);
}
public Bintree() {
}
public void creat(Object[] obj) {
datas=new ArrayList<Bintree>();
for(Object temp:obj) {
datas.add(new Bintree(temp));
}
root=datas.get(0);
for(int i=0;i<obj.length/2;i++) {
datas.get(i).left=datas.get(2*i+1);
if(2*i+2<datas.size())
datas.get(i).right=datas.get(2*i+2);
}
}
public void levelorder(Bintree root) {
Queue<Bintree> queue=new LinkedList<>();
ArrayList<Object> list=new ArrayList<>();
int size=0;
queue.offer(root);
while(true) {
size=queue.size();
if(size==0)
break;
else {
Bintree node=queue.poll();
list.add(node.data);
if(node.left!=null) {
queue.offer(node.left);
}
if(node.right!=null) {
queue.offer(node.right);
}
}
}
for(Iterator iter=list.iterator();iter.hasNext();)
System.out.print(iter.next()+" ");
}
public static void main(String[] args) {
Bintree bintree=new Bintree();
int values[] = {80099, 16114, 63108, 25032, 31044, 59069, 39099, 13110, 34101, 66120,19116, 72105, 70045, 38032, 41110, 12105, 75110, 27105, 1105, 9114,67117, 20101, 21100, 11032, 79046, 32112, 5111, 6117, 45116, 22032,61097, 65120, 49110, 15101, 82109, 50103, 54110, 17101, 46032, 4121,
76097, 7032, 57105, 2102, 58044, 8097, 44099, 73064, 81111, 43097,30112, 14116, 60109, 74104, 77105, 35097, 64058, 29112, 55032, 33108,71108, 40111, 47088, 52117, 56076, 68097, 37101, 78114, 24110, 53097,69110, 48105, 18115, 26072, 3032, 42116, 62105, 51120, 28065, 10101,23105, 36115};
//System.out.println(values.length);
Integer[] value=new Integer[82];
int j=0;
TreeSet<Integer> set=new TreeSet<>();
for(int temp:values) {
set.add(temp);
}
for(Iterator iter=set.iterator();iter.hasNext();) {
value[j++]=(Integer) iter.next();
}
bintree.creat(value);
bintree.levelorder(bintree.root);
}
}
运行结果如下:
1105 2102 3032 4121 5111 6117 7032 8097 9114 10101 11032 12105 13110 14116 15101 16114 17101 18115 19116 20101 21100 22032 23105 24110 25032 26072 27105 28065 29112 30112 31044 32112 33108 34101 35097 36115 37101 38032 39099 40111 41110 42116 43097 44099 45116 46032 47088 48105 49110 50103 51120 52117 53097 54110 55032 56076 57105 58044 59069 60109 61097 62105 63108 64058 65120 66120 67117 68097 69110 70045 71108 72105 73064 74104 75110 76097 77105 78114 79046 80099 81111 82109