发表于: 2017-08-12 23:25:56
2 873
一、今天完成的事情:
写一种平衡二叉树的算法结构来查询数据,因为二叉树的数据结构所以他的查询效率还是很高的就是遍历效率比较查。
public class Node {
public int value;
public Node left;
public Node right;
public void stroe(int value){
if (value<this.value){
if (left==null){
left=new Node();
left.value=value;
}else {
left.stroe(value);
}
}else if (value>this.value){
if (right==null){
right=new Node();
right.value=value;
}else {
right.stroe(value);
}
}
}
public boolean find(int value){
System.out.println("happen"+this.value);
if (value==this.value){
return true;
}
else if (value>this.value){
if (right==null)return false;
return right.find(value);
}else {
if (left==null) return false;
return left.find(value);
}
}
//这里我们线不看他的遍历
public void perList(){
System.out.println(this.value+".");
if (left!=null)left.perList();
if (right!=null)right.perList();
}
public void middleList(){
if (left!=null)left.perList();
System.out.println(this.value+".");
if (right!=null)right.perList();;
}
public void afterList(){
if (left!=null)left.perList();
System.out.println(this.value+".");
if (right!=null)right.perList();
}
//遍历结束
public static void main(String[] args) {
int[] data=new int[20];
for (int i=0;i<data.length;i++){
data[i]= (int) (Math.random()*100+1);
System.out.println("data is:"+data[i]);
}
System.out.println("===========================================================>");
Node root=new Node();
root.value=data[0];
for (int i=0;i<data.length;i++){
root.stroe(data[i]);
}
root.find(data[19]);
System.out.println("=============================================================");
root.perList();
root.middleList();
System.out.println("<============================================================");
root.afterList();
}
}
整个过程都一线了二叉树的思想,把一个数组存储到二叉树里面,是需要进行排序确定借点的。
二、遇到的问题:无
三、明天计划的事情:无
四、收获:最近在复习算法的基础知识,感觉很多都是常用的,递归是一个很好的体现,上面的平衡二叉树也用到了递归的思想。需要我们自己多打断点去揣摩一下。
评论