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 + -
显示快捷键?