Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何制作n元树和前序遍历_Java - Fatal编程技术网

Java 如何制作n元树和前序遍历

Java 如何制作n元树和前序遍历,java,Java,我正在从事一个j2ee项目,我需要一个动态菜单。 我的数据库里有数据。现在我想做一棵树,并按预定顺序遍历树。 你能帮我怎么做吗?这是我的工作代码,用来创建一棵树并遍历预订单和顺序 希望它能帮助你 public class NaryTree { static HashMap<String, NaryTree.Node> tree = new HashMap<String, NaryTree.Node>(); public static void mai

我正在从事一个j2ee项目,我需要一个动态菜单。 我的数据库里有数据。现在我想做一棵树,并按预定顺序遍历树。
你能帮我怎么做吗?

这是我的工作代码,用来创建一棵树并遍历预订单和顺序

希望它能帮助你

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列表谢谢你。我会通过的