Java 如何制作n元树和前序遍历
我正在从事一个j2ee项目,我需要一个动态菜单。 我的数据库里有数据。现在我想做一棵树,并按预定顺序遍历树。Java 如何制作n元树和前序遍历,java,Java,我正在从事一个j2ee项目,我需要一个动态菜单。 我的数据库里有数据。现在我想做一棵树,并按预定顺序遍历树。 你能帮我怎么做吗?这是我的工作代码,用来创建一棵树并遍历预订单和顺序 希望它能帮助你 public class NaryTree { static HashMap<String, NaryTree.Node> tree = new HashMap<String, NaryTree.Node>(); public static void mai
你能帮我怎么做吗?这是我的工作代码,用来创建一棵树并遍历预订单和顺序 希望它能帮助你
public class NaryTree {
static HashMap<String, NaryTree.Node> tree = new HashMap<String, NaryTree.Node>();
public static void main(String[] args) {
new NaryTree().makeTree();
traverseFrom(tree.get("000"));
}
public static void traverseFrom(Node rootNode) {
if(rootNode.getChildren().size()!= 0) {
for (Node pNode : rootNode.getChildren()) {
System.out.println(" Lavel:"+pNode.lavel+" - Node Value:"+pNode.val); // preorder traverse
traverseFrom(pNode);
//System.out.print(" Lavel :"+pNode.lavel+"- Node Value :"+pNode.val); // preorder traverse
}
}
}
private void makeTree() {
Node newNode = new Node("000", null, new ArrayList<NaryTree.Node>());
newNode.setLavel(0);
tree.put("000", newNode);
//newNode.getParent().getChildren().add(newNode);
newNode = new Node("101", tree.get("000"), new ArrayList<NaryTree.Node>());
tree.put("101", newNode);
newNode.getParent().getChildren().add(newNode);
newNode = new Node("102", tree.get("000"), new ArrayList<NaryTree.Node>());
tree.put("102", newNode);
newNode.getParent().getChildren().add(newNode);
newNode = new Node("103", tree.get("000"), new ArrayList<NaryTree.Node>());
tree.put("103", newNode);
newNode.getParent().getChildren().add(newNode);
newNode = new Node("201", tree.get("101"), new ArrayList<NaryTree.Node>());
tree.put("201", newNode);
newNode.getParent().getChildren().add(newNode);
newNode = new Node("202", tree.get("101"), new ArrayList<NaryTree.Node>());
tree.put("202", newNode);
newNode.getParent().getChildren().add(newNode);
newNode = new Node("205", tree.get("103"), new ArrayList<NaryTree.Node>());
tree.put("205", newNode);
newNode.getParent().getChildren().add(newNode);
newNode = new Node("301", tree.get("201"), new ArrayList<NaryTree.Node>());
tree.put("301", newNode);
newNode.getParent().getChildren().add(newNode);
newNode = new Node("104", tree.get("000"), new ArrayList<NaryTree.Node>());
tree.put("104", newNode);
newNode.getParent().getChildren().add(newNode);
}
private class Node {
private String val;
private int lavel;
private Node parent;
private List<Node> children;
public Node(String val, Node parent, List<Node> children) {
this.val = val;
this.parent = parent;
this.children = children;
if(parent!=null)
this.lavel = (int) parent.getLavel()+1;
else
this.lavel = 0;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
public Node getParent() {
return parent;
}
public void setParent(Node parent) {
this.parent = parent;
}
public List<Node> getChildren() {
return children;
}
public void setChildren(List<Node> children) {
this.children = children;
}
public int getLavel() {
return lavel;
}
public void setLavel(int lavel) {
this.lavel = lavel;
}
}
}
公共类NaryTree{
静态HashMap树=新HashMap();
公共静态void main(字符串[]args){
新建NaryTree().makeTree();
traverseFrom(tree.get(“000”));
}
公共静态void traverseFrom(Node rootNode){
if(rootNode.getChildren().size()!=0){
对于(Node pNode:rootNode.getChildren()){
System.out.println(“Lavel:+pNode.Lavel+”-节点值:+pNode.val);//预订单遍历
遍历窗口(pNode);
//System.out.print(“Lavel:+pNode.Lavel+”-节点值:+pNode.val);//预订单遍历
}
}
}
私有void makeTree(){
Node newNode=新节点(“000”,null,new ArrayList());
newNode.setLavel(0);
tree.put(“000”,newNode);
//newNode.getParent().getChildren().add(newNode);
newNode=newNode(“101”,tree.get(“000”),newarraylist());
tree.put(“101”,newNode);
newNode.getParent().getChildren().add(newNode);
newNode=newNode(“102”,tree.get(“000”),newarraylist());
tree.put(“102”,newNode);
newNode.getParent().getChildren().add(newNode);
newNode=newNode(“103”,tree.get(“000”),newarraylist());
tree.put(“103”,newNode);
newNode.getParent().getChildren().add(newNode);
newNode=newNode(“201”,tree.get(“101”),newarraylist());
tree.put(“201”,newNode);
newNode.getParent().getChildren().add(newNode);
newNode=newNode(“202”,tree.get(“101”),newarraylist());
tree.put(“202”,newNode);
newNode.getParent().getChildren().add(newNode);
newNode=newNode(“205”,tree.get(“103”),newarraylist());
tree.put(“205”,newNode);
newNode.getParent().getChildren().add(newNode);
newNode=newNode(“301”,tree.get(“201”),newarraylist());
tree.put(“301”,newNode);
newNode.getParent().getChildren().add(newNode);
newNode=newNode(“104”,tree.get(“000”),newarraylist());
tree.put(“104”,newNode);
newNode.getParent().getChildren().add(newNode);
}
私有类节点{
私有字符串val;
私人厕所;
私有节点父节点;
私人名单儿童;
公共节点(字符串val、节点父节点、列表子节点){
this.val=val;
this.parent=parent;
这个。孩子=孩子;
如果(父项!=null)
this.lavel=(int)parent.getLavel()+1;
其他的
此参数为0;
}
公共字符串getVal(){
返回val;
}
公共void setVal(字符串val){
this.val=val;
}
公共节点getParent(){
返回父母;
}
公共void setParent(节点父节点){
this.parent=parent;
}
公共列表getChildren(){
返回儿童;
}
公共子项(列出子项){
这个。孩子=孩子;
}
公共int getLavel(){
回归紫菜;
}
公共无效设置层(内部层){
this.lavel=lavel;
}
}
}
查看Primefaces的树组件,尤其是java代码和文档:。图中显示了将什么对象用作树节点以及如何初始化树。希望这有帮助。制作树的代码不错。但是我需要制作html ul和ol列表谢谢你。我会通过的