Pertama, mari kita lihat contoh kode dua struktur menu pohon.
Singletreenode:
Paket com.zzj.tree; kelas publik singletreenode {private int id; private int pid; name string pribadi; singletreenode publik () {} public singletreenode (int id, int pid, string name) {this.id = this.pid = pid; this.name = name;} public int getid () {this.pid = pid; this.name = name;} public int getid () {this.pid = pID; this.name = name;} public int getid () {this.pid = pid; this.name = name; name;} public int getid () {this.pid = pID; this.name = name; name;} public int getid () {{{{{{this.name = name; name;} public int getid () {{{this int getPid () {return pid;} public void setPid (int pid) {this.pid = pid;} public string getName () {return name;} public void setName (string name) {this.name = name;}@override public string toString () {return "singletreenode [id =" "public string toString () {return" singletreenode [id = "" public string toString () {return "singletreenode [Id =" ID = " "]";}}Struktur ini sangat cocok untuk penyimpanan dalam database relasional.
Multitreenode:
Paket com.zzj.tree; import java.util.list; kelas publik multitreenode {private int id; nama string pribadi; daftar pribadi <multitreenode> anak -anak; multitreenode publik () {} public multitreenode (int iD, string name) {this.id = id; this.name = name;} public Multitre {name {this. = id; this.name = name; this.children = children;} public int getId () {return id;} public void setid (int id) {this.id = id;} get getName () {name public; SetChildren (Daftar <TritReenode> anak -anak) {this.children = anak -anak;}@override string publik ToString () {return "multitreenode [id =" + id + ", name =" + name + ", anak -anak =" + anak -anak + "]";}}Dua konverter
Tomultreetransformer:
Paket com.zzj.tree; impor java.util.arraylist; impor java.util.list; kelas publik tomultreetransformer {daftar pribadi <singletreenode> singletreenodes; daftar pribadi <) singletenodes (singletrans new arraylist <> (); tomultitrans publicrans> multitreenodes = new arraylist <) (); tomultitrans publicrans> multitreenodes = new arraylist <) (); publicterodes> singlletodes = new arraylist <> () tomultitrans publicrans> multitreenodes = new arraylist <); {this.singleTreeNodes = singleTreeNodes;}public List<MultiTreeNode> transform(){// First find all root nodes for (int i = 0; i < singleTreeNodes.size(); i++) {SingleTreeNode singleTreeNodes.get(i);Boolean isRoot = true;for (int j = 0; j < singleTreeNodes.size(); j ++) {singletreenode temp = singletreenodes.get (j); if (singletreenode.getPid () == temp.getId ()) {isroot = false; break;}} if (isroot) {multitreenode multitreenode = new multitreenode (singletreen) {multitreenode (), Multitreenode (singleenode. singleTreenode.getName ()); multitreenodes.add (multitreenode);}} // set node anak untuk (int i = 0; i <multitreenodes.size (); i ++) {multitreenode multitreenode = multitreenodes.get (i); setchren; {multitreenode (multitreenode = multitreenodes.get (i); setchren; multitreeDren) Multitreenode) (i); setChren; {{multitreenode (multitreenode) (i); setchren; {{multitreenode = multitreenodes. Setel node anak * @param multitreenode */private void setChildren (multitreenode multitreenode) {for (int j = 0; j <singletreenodes.size (); j ++) {singletreenode temp = singletreenodes.get (j); if (temp.getPid () == multitreenode.getId ()) {multitreenode child = multitreenode baru (temp.getId (), temp.getname ()); Daftar <distReenode> anak -anak = multitreenode.getChildren (); if (anak -anak == null) {anak -anak = anak -anak = ArrayList <> (); multitreenode.setchildren (anak);} anak -anak.Tosingletreetransformer:
Paket com.zzj.tree; impor java.util.arraylist; impor java.util.list; kelas publik toseletreetransformer {daftar pribadi <distReenode> multitreenodes; daftar pribadi <singletreenodes> singletreenodes = new arraylist <> (); TOPLETRANDETRANSEDETRES = MultitReNodes = new ArrayList <> () {this.multitreenodes = multitreenodes;} Daftar publik <SingletReenode> transform () {// Dapatkan node root untuk (int i = 0; i <multitreenodes.size (); i ++) {multitreenode multitreenode = multitreenodes.get (i); Singletreenode singletreenode = singletreenode baru (multitreenode.getId (), 0, multitreenode.getName ()); singleTreeNodes.add(singleTreeNode);}// Get the child node for (int i = 0; i < multiTreeNodes.size(); i++) {MultiTreeNode multiTreeNode = multiTreeNodes.get(i);getChildren(multiTreeNode);}return singleTreeNodes;}/** * Get child node* @param multiTreeNode */private void getChildren (multitreenode multitreenode) {for (int i = 0; i <singletreenodes.size (); i ++) {singletreenode temp = singletreenodes.get (i); if (multitreenode.getId () == temp.getId ()) {list <at multitreenode> anak = multitreenode.getChildren (); if (anak -anak! = null) {untuk (int j = 0; j <children.size (); j ++) {multitreenode anak = anak -anak. multitreenode.getId (), child.getName ()); singletreenodes.add (singletreenode); getchildren (anak);}}}}}}}}tes
package com.zzj.tree;import java.util.ArrayList;import java.util.List;public class TreeTransformerTest {private final static List<SingleTreeNode> SINGLE_TREE = new ArrayList<SingleTreeNode>();static {SingleTreeNode China = new SingleTreeNode(1, 0, "China");SINGLE_TREE.add(China);SingleTreeNode Hunan = new SingleTreeNode(2, 1, "Hunan");SINGLE_TREE.add(Hunan);SingleTreeNode Changsha = new SingleTreeNode(3, 2, "Changsha");SINGLE_TREE.add(Changsha);SingleTreeNode Hubei = new SingleTreeNode(4, 1, "Hubei");SINGLE_TREE.add(Hubei);SingleTreeNode Wuhan = new SingleTreeNode(5, 4, "Wuhan");SINGLE_TREE.add(Wuhan);SingleTreeNode America = new SingleTreeNode(6, 0, "United States");SINGLE_TREE.add(America);SingleTreeNode California = new SingleTreeNode(7, 6, "California"); single_tree.add (California); singletreenode losangeles = singletreenode baru (8, 7, "Los Angeles"); single_tree.add (losangeles);} public static Main (String [] args) Menggambar Pengecuali Tomultreetransformer (single_tree); Daftar <sultitreenode> multitreenodes = multitreetransformer.transform (); System.out.println (multitreenodes); toseTreenodesformer singletreetransformer = new toseTreetRansformer (multitreenodes = singletrees = singletreetranse (Multitreenodes = Multitreenodes = singletreesformer (multitreenodes = Multitreenodes = singleteResformer (multitreenodes = singletesformer (multitreenodes / singletesformer (multitreenodes / singletesformer (multitreenodes / singletesformer (multitreenodesformer singletreetransformer.transform (); system.out.println (singletreenodes);}}Hasil output:
[Multitreenode [id = 1, name = china, anak -anak = [multitreenode [id = 2, name = hunan, anak -anak = [multitreenode [id = 3, name = coraksha, anak -anak = null]]]], multitreenode [id = 4, name = hubei, anak -anak = [multitreenode [id = 5, name = wuhan = name = name, anak -anak = multitreenode [id = 5, name = wuhan = WUhan] [NOLD] [multitreenode [id = 5, name = WUhan = WUhan] [NOLD] [MULTITREENode [ID = 5, NAME = WUHAN = WUHAN] name=USA, children=[MultiTreeNode [id=7, name=California, children=[MultiTreeNode [id=8, name=Los Angeles, children=null]]]]]] [SingleTreeNode [id=1, pId=0, name=China], SingleTreeNode [id=6, pId=0, name=US], SingleTreeNode [id=2, pId=1, name=Hunan], SingleTreeNode [id=3, pId=2, name=Changsha], SingleTreeNode [id=4, pId=1, name=Hubei], SingleTreeNode [id=5, pId=4, name=Wuhan], SingleTreeNode [id=7, pId=6, name=California], SingleTreeNode [id=8, pId=7, name=Los Angeles]]
Meringkaskan
Di atas adalah seluruh konten artikel ini tentang kode konversi dua struktur menu pohon dari pemrograman Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Implementasi Java untuk menghasilkan contoh kode lengkap dari header pohon excel
Bahasa Java menggambarkan kedalaman dan lebar pohon biner
Contoh kode lengkap dari algoritma Java untuk mengimplementasikan pohon merah dan hitam
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya!