1.节点操作
package Source; //html树节点类 public class Node { //构造方法 public Node() { content = ""; hasContent = false; parent = null; isLeaf = true; } //构造方法,初始化此节点的内容,标签,与其父辈节点 public Node(String content, String tag, Node parent) { this.content = content; this.tag = tag; if(content.equalsIgnoreCase("")) hasContent = false; else hasContent = true; this.parent = parent; isLeaf = true; } //添加节点内容 public void addContent(String str) { content=content+str; if(content.equalsIgnoreCase("")) hasContent = false; else hasContent = true; return; } //设置为叶子 public void setLeaf(boolean is) { isLeaf = is; } //设置为块 public void setBlock(boolean is) { isBlock = is; } public String toString() { return content; } String content; String tag; boolean hasContent; boolean isLeaf; boolean isBlock; Node parent; }
2.树操作
package Source; import java.util.LinkedList; public class HTree { //构造方法,初始化 public HTree() { list = new LinkedList(); } //插入节点 public void insert(Node node) { list.add(node); } //打印整棵树的节点的信息 public void print() { int len = list.size(); for(int i = len - 1; i >= 0; i--) { Node node = (Node)list.get(i); String str = node.content.trim(); if(!str.equals("")) System.out.println(str); } } //打印块的信息 public void print2() { int len = list.size(); for(int i = len - 1; i >= 0; i--) { Node node = (Node)list.get(i); if(node.isBlock) System.out.println(node.content); } } //合并节点,将叶节点合并至其双亲 public void merge() { int len = list.size(); for(int i = len - 1; i >= 0; i--) { Node node = (Node)list.get(i); if(node.isLeaf) { Node curr = node; String str = curr.content; while(curr != null) { Node next = curr.parent; if(next != null) { if(next.hasContent) { next.addContent(str); next.setLeaf(true); node.setBlock(false); break; } next.setLeaf(false); curr = next; } else curr = null; } if(curr == null) node.setBlock(true); } } } //获取块信息 public String[] getBlock() { int len = list.size(); int num = 0; //获取非空节点的个数 for(int i = len - 1; i >= 0; i--) { Node node = (Node)list.get(i); String str = node.content.trim(); if(!str.equals("")) num++; } String contBlock[] = new String[num]; num = 0; //返回信息 for(int i = len - 1; i >= 0; i--) { Node node = (Node)list.get(i); String str = node.content.trim(); if(!str.equals("")) contBlock[num++] = str; } return contBlock; } private LinkedList list; }