trees.java

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

JAVA
123
字号
package test2;
import java.util.*;

public class Trees {
	public static LinkedList<Tree> roots=new LinkedList<Tree>();
	public static LinkedList<Leaf> leafs=new LinkedList<Leaf>();
	public static LinkedList<Node> nodes=new LinkedList<Node>();
	
	
	public static void contruct42()
	{
		Leaf a1=new Leaf('A'); 
		Leaf b1=new Leaf('B'); 
		NOT s11=new NOT();
		Sequence s12=new Sequence();
		s11.setrchild(a1);
		s12.setlchild(s11);
		s12.setrchild(b1);
		a1.addparent(s11);a1.setMode(true);
		b1.addparent(s12);b1.setMode(true);
		s11.addparent(s12);s11.setMode(false);
		Tree tree1=new Tree("(!A);B",s12);
		tree1.setNodes();
		tree1.getLeafnodes().addLast(a1);
		tree1.getLeafnodes().addLast(b1);
		roots.addLast(tree1);
		
		Leaf a2=new Leaf('A'); 
		Leaf b2=new Leaf('B'); 
		Leaf c2=new Leaf('C');
		Sequence s21=new Sequence(); 
		Sequence s22=new Sequence(); 
		s21.setlchild(a2);
		s21.setrchild(s22);
		s22.setlchild(b2);
		s22.setrchild(c2);
		a2.addparent(s21);a2.setMode(false);
		b2.addparent(s22);b2.setMode(false);
		c2.addparent(s22);c2.setMode(true);
		s22.addparent(s21);s22.setMode(true);
		Tree tree2=new Tree("A;(B;C)",s21);
		tree2.setNodes();
		tree2.getLeafnodes().addLast(a2);
		tree2.getLeafnodes().addLast(b2);
		tree2.getLeafnodes().addLast(c2);
		roots.addLast(tree2);

		Leaf a3=new Leaf('A'); 
		Leaf b3=new Leaf('B'); 
		Leaf c3=new Leaf('C');
		Sequence s31=new Sequence(); 
		OR s32=new OR(); 
		s31.setlchild(a3);
		s31.setrchild(s32);
		s32.setlchild(b3);
		s32.setrchild(c3);
		a3.addparent(s31);a3.setMode(false);
		b3.addparent(s32);b3.setMode(true);
		c3.addparent(s32);c3.setMode(true);
		s32.addparent(s31);s32.setMode(true);
		Tree tree3=new Tree("A;(B+C)",s31);
		tree3.setNodes();
		tree3.getLeafnodes().addLast(a3);
		tree3.getLeafnodes().addLast(b3);
		tree3.getLeafnodes().addLast(c3);
		roots.addLast(tree3);

		for(int i=0;i<roots.size();i++)
		{
			leafs.addAll(roots.get(i).getLeafnodes());
		}	
		
		setNodes();
	}
	
	public static LinkedList<Leaf> insert(P_Event e)
	{
		LinkedList<Leaf> leaf=new LinkedList<Leaf>();
		for(int i=0;i<leafs.size();i++)
		{
			if(leafs.get(i).gettype()==e.gettype())
				leaf.addLast(leafs.get(i));
		}
		if(leaf.size()!=0)
		{
			for(int i=0;i<leaf.size();i++)
			    leaf.get(i).insert(e);
						
		}
		return leaf;
		
	}
	
	public static void setNodes() {
		for(int i=0;i<roots.size();i++)
		nodes.addLast(roots.get(i).getRoot());		
		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 LinkedList<Node> getNodes() {
		return nodes;
	}
	
	public static boolean checkisroot(Node n)
	{
		int i;
		for(i=0;i<roots.size();i++)
		if(n==roots.get(i).getRoot()) break;
		if(i==roots.size()) return false;
		return true;
	}

}

⌨️ 快捷键说明

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