「java转化树」java 树

博主:adminadmin 2022-11-29 15:38:09 73

本篇文章给大家谈谈java转化树,以及java 树对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java实现树形结构,可以把String[] a = {"1", "1-3-4", "1-2", "1-2"}这个数组,转变成如图的树json么?

//先定义一个类,方便转换

public class Menu {

 

    private Long id;

    private List child = new ArrayList();

     

    public Menu(Long id) {

        this.id = id;

    }

}

public class String2JsonTest {

 

     

    public static void main(String[] args) {

        String[] a = {"1", "1-3-2", "1-2", "1-2"};

        List list2 = new ArrayList();

         

        for (int i = 0; i  a.length; i++) {

            String[] b = a[i].split("-"); 

            List tempList = list2;

            Menu tempMenu = null;

            for (int j = 0; j  b.length; j++) {

                tempMenu = new Menu(Long.valueOf(b[j]));

                Menu exist = isExist(tempMenu,tempList);

                if(exist==null){

                    tempList.add(tempMenu);

                    tempList = tempMenu.getChild();

                }else{

                    tempList = exist.getChild();

                }

            }

             

        }

        String jsonArray2 = JSONArray.toJSONString(list2);

        System.out.println(jsonArray2);

    }

    private static Menu isExist(Menu menu,ListMenu list){

        for (Menu obj : list) {

            if(menu.getId().equals(obj.getId())){

                return obj;

            }

             

        }

        return null;

    }

}

java 由字符串构成的二叉树

java构造二叉树,可以通过链表来构造,如下代码:

public class BinTree {public final static int MAX=40;BinTree []elements = new BinTree[MAX];//层次遍历时保存各个节点 int front;//层次遍历时队首 int rear;//层次遍历时队尾private Object data; //数据元数private BinTree left,right; //指向左,右孩子结点的链public BinTree(){}public BinTree(Object data){ //构造有值结点 this.data = data; left = right = null;}public BinTree(Object data,BinTree left,BinTree right){ //构造有值结点 this.data = data; this.left = left; this.right = right;}public String toString(){ return data.toString();}//前序遍历二叉树public static void preOrder(BinTree parent){ if(parent == null) return; System.out.print(parent.data+" "); preOrder(parent.left); preOrder(parent.right);}//中序遍历二叉树public void inOrder(BinTree parent){ if(parent == null) return; inOrder(parent.left); System.out.print(parent.data+" "); inOrder(parent.right);}//后序遍历二叉树public void postOrder(BinTree parent){ if(parent == null) return; postOrder(parent.left); postOrder(parent.right); System.out.print(parent.data+" ");}// 层次遍历二叉树 public void LayerOrder(BinTree parent){ elements[0]=parent; front=0;rear=1; while(frontrear) { try { if(elements[front].data!=null) { System.out.print(elements[front].data + " "); if(elements[front].left!=null) elements[rear++]=elements[front].left; if(elements[front].right!=null) elements[rear++]=elements[front].right; front++; } }catch(Exception e){break;} }}//返回树的叶节点个数public int leaves(){ if(this == null) return 0; if(left == nullright == null) return 1; return (left == null ? 0 : left.leaves())+(right == null ? 0 : right.leaves());}//结果返回树的高度public int height(){ int heightOfTree; if(this == null) return -1; int leftHeight = (left == null ? 0 : left.height()); int rightHeight = (right == null ? 0 : right.height()); heightOfTree = leftHeightrightHeight?rightHeight:leftHeight; return 1 + heightOfTree;}//如果对象不在树中,结果返回-1;否则结果返回该对象在树中所处的层次,规定根节点为第一层public int level(Object object){ int levelInTree; if(this == null) return -1; if(object == data) return 1;//规定根节点为第一层 int leftLevel = (left == null?-1:left.level(object)); int rightLevel = (right == null?-1:right.level(object)); if(leftLevel0rightLevel0) return -1; levelInTree = leftLevelrightLevel?rightLevel:leftLevel; return 1+levelInTree; }//将树中的每个节点的孩子对换位置public void reflect(){ if(this == null) return; if(left != null) left.reflect(); if(right != null) right.reflect(); BinTree temp = left; left = right; right = temp;}// 将树中的所有节点移走,并输出移走的节点public void defoliate(){ if(this == null) return; //若本节点是叶节点,则将其移走 if(left==nullright == null) { System.out.print(this + " "); data = null; return; } //移走左子树若其存在 if(left!=null){ left.defoliate(); left = null; } //移走本节点,放在中间表示中跟移走... String innerNode += this + " "; data = null; //移走右子树若其存在 if(right!=null){ right.defoliate(); right = null; }} /*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stub BinTree e = new BinTree("E"); BinTree g = new BinTree("G"); BinTree h = new BinTree("H"); BinTree i = new BinTree("I"); BinTree d = new BinTree("D",null,g); BinTree f = new BinTree("F",h,i); BinTree b = new BinTree("B",d,e); BinTree c = new BinTree("C",f,null); BinTree tree = new BinTree("A",b,c); System.out.println("前序遍历二叉树结果: "); tree.preOrder(tree); System.out.println(); System.out.println("中序遍历二叉树结果: "); tree.inOrder(tree); System.out.println(); System.out.println("后序遍历二叉树结果: "); tree.postOrder(tree); System.out.println(); System.out.println("层次遍历二叉树结果: "); tree.LayerOrder(tree); System.out.println(); System.out.println("F所在的层次: "+tree.level("F")); System.out.println("这棵二叉树的高度: "+tree.height()); System.out.println("--------------------------------------"); tree.reflect(); System.out.println("交换每个节点的孩子节点后......"); System.out.println("前序遍历二叉树结果: "); tree.preOrder(tree); System.out.println(); System.out.println("中序遍历二叉树结果: "); tree.inOrder(tree); System.out.println(); System.out.println("后序遍历二叉树结果: "); tree.postOrder(tree); System.out.println(); System.out.println("层次遍历二叉树结果: "); tree.LayerOrder(tree); System.out.println(); System.out.println("F所在的层次: "+tree.level("F")); System.out.println("这棵二叉树的高度: "+tree.height());

java 如何实现树、图结构?

你如果要树形展示,在JSP上只能用树控件,类似dtree.js这种第三方JS包

如果是树体系,JAVA还是面向对象,只能用代码描述出一棵树,包括各个属性,能通过数据体现一个树的体系(子父编号关联),但无法直观的看出图形来

java输出一棵树

public class tree_test {

static int count=0;

public static void main(String[] args) {

treestruct T=new treestruct("-");

constructtree c=new constructtree(T);

prio(T);

System.out.println();

System.out.println("count:"+count);

count=0;

mid(T);

System.out.println();

System.out.println("count:"+count);

count=0;

last(T);

System.out.println();

System.out.println("count:"+count);

count=0;

}

static void prio(treestruct T){

if(T!=null){

visit(T.data);

prio(T.left);

prio(T.right);

}

count++;

}

static boolean mid(treestruct T){

if(T!=null){

if (!mid(T.left)) {

visit((T.data));

if(!mid(T.right)){

}

}

}

count++;

return false;

}

static boolean last(treestruct T){

if(T!=null){

if(!last(T.left)){

if(!last(T.right))

visit(T.data);

}

}

count++;

return false;

}

static void visit(Object n){

if(n!=null)

System.out.print(n);

else

System.out.print("null");

}

}

如何将java对象数组转化为JSON树

1、需要json的相关jar包 2、设置json格式字符串: String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\"...

关于java转化树和java 树的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。