tree.java

来自「RFID复杂事件处理系统的研究实验」· Java 代码 · 共 214 行

JAVA
214
字号
package test1;
import java.util.*;

public class Tree {
	private String patterns;	
	private NonLeaf root;
	private LinkedList<Leaf> leafnodes=new LinkedList<Leaf>();
	private LinkedList<Node> nodes=new LinkedList<Node>();
	
	public LinkedList<Leaf> getLeafnodes() {
		return leafnodes;
	}

	public void setLeafnodes(LinkedList<Leaf> leafnodes) {
		this.leafnodes = leafnodes;
	}

	public String getPatterns() {
		return patterns;
	}

	public void setPatterns(String patterns) {
		this.patterns = patterns;
	}

	public NonLeaf getRoot() {
		return root;
	}

	public void setRoot(NonLeaf root) {
		this.root = root;
	}

	public Tree(String patterns, NonLeaf root) {
		super();
		this.patterns = patterns;
		this.root = root;
	}
	
	public Leaf insert(P_Event e)
	{
		int i;
		for(i=0;i<leafnodes.size();i++)
		{
			if(leafnodes.get(i).gettype()==e.gettype())
				break;
		}
		if(i!=leafnodes.size())
		{
			leafnodes.get(i).insert(e);
			return leafnodes.get(i);			
		}else return null;
		
	}

	public LinkedList<Node> getNodes() {
		return nodes;
	}

	public void setNodes() {
		nodes.addLast(root);		
		for(int i=0;i<nodes.size();i++)
		{
			if(!nodes.get(i).getisleaf()){
			NonLeaf n=(NonLeaf)nodes.get(i);
			if(n.getrchild()!=null && !nodes.contains(n.getrchild()))
				nodes.addLast(n.getrchild());
			if(n.getlchild()!=null && !nodes.contains(n.getlchild()))
				nodes.addLast(n.getlchild());		
			}
		}
	}
	


	
	
	
	
	/*public static void setCoordinates(int x,int y,int mindistance,int width,int height)
	{
        //初始坐标
		//最小间隔
		//层次间距
		
		LinkedList<Node> nodes=new LinkedList<Node>();//did
		LinkedList<NonLeaf> l=new LinkedList<NonLeaf>();//undo
		nodes.addAll(Trees.leafnodes);
		l.add((NonLeaf)Trees.getRoots()[0]);		
		for(int i=0;i<l.size();i++)
		{
			NonLeaf n;
			n=l.get(i);
			if(n.getrchild()!=null && n.getrchild().getisleaf()!=true&&!l.contains(n.getrchild()))
				l.addLast((NonLeaf)n.getrchild());
			if(n.getlchild()!=null && n.getlchild().getisleaf()!=true&&!l.contains(n.getlchild()))
				l.addLast((NonLeaf)n.getlchild());			
		}
		int x0=x+mindistance;
		for(int i=0;i<Trees.leafnodes.size();i++)
		{
			
			Trees.leafnodes.get(i).setX(x0);
			Trees.leafnodes.get(i).setY(y-20);
			x0=x0+width;
		}
		while(l.size()!=0)
		{
			NonLeaf n=l.removeLast();
			if(n.getlchild()==null)
			{
				if(nodes.contains(n.getrchild()))
				{
					n.setX(n.getrchild().getX());
					n.setY(n.getrchild().getY()-height);
					LinkedList<Trees.Int> m=new LinkedList<Trees.Int>();
					for(int j=0;j<nodes.size();j++)
					{
						if(nodes.get(j).getX()==n.getX()
							&& nodes.get(j).getY()==n.getY())
							m.addLast(new Trees.Int(j));
					}
					if(m.size()!=0)
					{
						int xx=m.size();
						int distance=mindistance*xx/2;
						for(int j=0;j<m.size();j++)
						{
							nodes.get(m.get(m.get(j).gett()).gett()).setX(n.getrchild().getX()-distance+j*mindistance);
						}							
						n.setX(n.getrchild().getX()+distance);							
						n.setY(n.getrchild().getY()-height);
					}
				}else{
					if(l.size()<3){
						l.add(l.size()-2, n);
					}else{
					l.add(l.size()-3, n);
					continue;}
				}
			}else{
				if(n.getrchild()==null)
				{
					if(nodes.contains(n.getlchild()))
					{
						n.setX(n.getlchild().getX());
						n.setY(n.getlchild().getY()-height);
						LinkedList<Trees.Int> m=new LinkedList<Trees.Int>();
						for(int j=0;j<nodes.size();j++)
						{
							if(nodes.get(j).getX()==n.getX()
								&& nodes.get(j).getY()==n.getY())
								m.addLast(new Trees.Int(j));
						}
						if(m.size()!=0)
						{
							int xx=m.size();
							int distance=mindistance*xx/2;
							for(int j=0;j<m.size();j++)
							{
								nodes.get(m.get(j).gett()).setX(n.getlchild().getX()-distance+j*mindistance);
							}							
							n.setX(n.getlchild().getX()+distance);							
							n.setY(n.getlchild().getY()-height);
						}
					}else{
						if(l.size()<3){
							l.add(l.size()-2, n);
						}else{
						l.add(l.size()-3, n);
						continue;}
					}
				}else{
					if(nodes.contains(n.getlchild())&&nodes.contains(n.getrchild()))
					{				
						n.setX((n.getlchild().getX()+n.getrchild().getX())/2);
						n.setY(Math.min(n.getlchild().getY(),n.getrchild().getY())-height);
						LinkedList<Trees.Int> m=new LinkedList<Trees.Int>();
						for(int j=0;j<nodes.size();j++)
						{
							if(nodes.get(j).getX()==n.getX()
								&& nodes.get(j).getY()==n.getY())
								m.addLast(new Trees.Int(j));
						}
						if(m.size()!=0)
						{
							int xx=m.size()+2;
							int distance=Math.abs(n.getlchild().getX()-n.getrchild().getX())/xx;
							for(int j=0;j<m.size();j++)
							{
								nodes.get(m.get(j).gett()).setX(Math.min(n.getlchild().getX(),n.getrchild().getX())+(j+1)*distance);
							}							
							n.setX(Math.max(n.getlchild().getX(),n.getrchild().getX())-distance);							
							n.setY(Math.min(n.getlchild().getY(),n.getrchild().getY())-height);
						}
					}else{
						if(l.size()<3){
							l.add(l.size()-2, n);
						}else{
						l.add(l.size()-3, n);
						continue;}
					}
				}
			}			
			nodes.addFirst(n);		
	    }
	}*/
	
	

	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?