ก่อนอื่นมาดูตัวอย่างรหัสของโครงสร้างเมนูต้นไม้สองตัว
Singletreenode:
แพ็คเกจ com.zzj.tree; คลาสสาธารณะ singletreenode {private int id; private int pid; ชื่อสตริงส่วนตัว; singletreenode สาธารณะ () {} public singletreenode (int id, int pid, ชื่อสตริง) {this.id = id; this.pid = pid; this.name = name; int getPid () {return pid;} โมฆะสาธารณะ setPid (int pid) {this.pid = pid;} สตริงสาธารณะ getName () {return name;} โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; -โครงสร้างนี้เหมาะมากสำหรับการจัดเก็บในฐานข้อมูลเชิงสัมพันธ์
MultiTreenode:
แพ็คเกจ com.zzj.tree; นำเข้า java.util.list; คลาสสาธารณะ MultiTreenode {ID ส่วนตัว ID; ชื่อสตริงส่วนตัว; รายการส่วนตัว <MultiTreenode> เด็ก; MultiTreenode สาธารณะ () {} Public Multitreenode (int id, ชื่อสตริง) {this.id = id; = id; this.name = name; this.children = เด็ก;} public int getId () {return id;} โมฆะสาธารณะ setId (int id) {this.id = id;} สตริงสาธารณะ getName () {ชื่อกลับ; SetChildren (รายการ <มัลติเพนเดนเดอร์> เด็ก) {this.children = เด็ก;}@reverride สตริงสาธารณะ toString () {return "MultiTreenode [id =" + id + ", name =" + name + ", children =" + children + "]";}}}}}}ตัวแปลงสองตัว
tomultitreetransformer:
แพ็คเกจ com.zzj.tree; นำเข้า java.util.arraylist; นำเข้า java.util.list; ชั้นเรียนสาธารณะ tomultitreetransformer {รายการส่วนตัว <Singletreenode> singletreenodes; รายการส่วนตัว <MultiTreenodes> Multitreenodes = new Arraylist {this.singletreenodes = singletreenodes;} รายการสาธารณะ <MultiTreenode> transform () {// ก่อนค้นหาโหนดรูททั้งหมดสำหรับ (int i = 0; i <singletreenodes.size (); i ++) j ++) {singletreenode temp = singletreenodes.get (j); ถ้า (singletreenode.getPid () == temp.getId ()) {isroot = false; break;}} ถ้า (isroot) singletreenode.getName ()); multitreenodes.add (Multitreenode);}} // ตั้งโหนดเด็กสำหรับ (int i = 0; i <multitreenodes.size (); i ++) {MultiTreenode MultiTreenode = Multitreenode.get (i); ตั้งค่าโหนดเด็ก * @param MultitreEnode */โมฆะส่วนตัว setchildren (MultiTreenode MultiTreenode) {สำหรับ (int j = 0; j <singletreenodes.size (); j ++) {singletreenode temp = singletreenodes.get (j); if (temp.getPid () == multitreenode.getId ()) {multiTreenode child = new MultiTreenode (temp.getId (), temp.getName ()); รายการ <มัลติมีเดีย> เด็ก = multitreenode.getChildren () arrayList <> (); MultiTreenode.setchildren (เด็ก);} children.add (เด็ก); setchildren (เด็ก);}}}}}TosingletReetRansformer:
แพ็คเกจ com.zzj.tree; นำเข้า java.util.arraylist; นำเข้า java.util.list; คลาสสาธารณะ tosingletreetransformer {รายการส่วนตัว <มัลติมีเดีย> มัลติมีเดียรายการส่วนตัว {this.MultItreEnodes = MultItreEnodes;} รายการสาธารณะ <SingleTreEnode> transform () {// รับโหนดรูทสำหรับ (int i = 0; i <multitreenodes.size (); i ++) singletreenode singletreenode = ใหม่ singletreenode (multitreenode.getId (), 0, multitreenode.getName ()); singletreenodes.add (singletreenode);} // รับโหนดลูกสำหรับ (int i = 0; i <multitreenodes.size (); i ++) {Multitreenode Multitreenode = Multitreenodes.get (i); getchildren */โมฆะส่วนตัว getChildren (MultiTreenode Multitreenode) {สำหรับ (int i = 0; i <singletreenodes.size (); i ++) {singletreenode temp = singletreenodes.get (i); if (multitreenode.getId () == temp.getId ()) {list <multitreenode> child = multitreenode.getChildren (); ถ้า (เด็ก! = null) {สำหรับ (int j = 0; j <children.size (); j ++) multitreenode.getId (), child.getName ()); singletreenodes.add (singletreenode); getchildren (เด็ก);}}}}}}}}}}}}}ทดสอบ
แพ็คเกจ com.zzj.tree; นำเข้า java.util.arraylist; นำเข้า java.util.list; TreetRansformerTest ชั้นเรียนสาธารณะ {รายการคงที่ส่วนตัวสุดท้าย <SingletreEnode> single_tree = newrayList <SingleTreEnode> () "จีน"); single_tree.add (จีน); Singletreenode Hunan = New Singletreenode (2, 1, "Hunan"); single_tree.add (Hunan); Singletreenode Changsha = Singletreenode ใหม่ (3, 2, "Changsha"); "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 (แคลิฟอร์เนีย); Singletreenode losangeles = ใหม่ singletreenode (8, 7, "Los Angeles"); single_tree.add (losangeles);} โมฆะคงที่สาธารณะ TomultItreetRansformer (single_tree); list <MultiTreenode> MultiTreenodes = MultitreetRansformer.Transform (); System.out.println (Multitreenodes); TosingletReetRansformer SingletReetRanformer = ใหม่ singletreetransformer.transform (); system.out.println (singletreenodes);}}ผลลัพธ์ผลลัพธ์:
[MultiTreenode [ID = 1, NAME = China, Children = [MultiTreenode [ID = 2, NAME = HUNAN, เด็ก = [MultItreEnode [ID = 3, ชื่อ = Changsha, เด็ก = NULL]]]], Multitreenode [ID = 4, ชื่อ = hubei, เด็ก = [Multitreenode [multitreenode NAME = USA, เด็ก = [MultItreEnode [ID = 7, ชื่อ = California, เด็ก = [MultItreEnode [ID = 8, NAME = LOS ANGELES, เด็ก = NULL]]]]] [SingletReenode [ID = 1, PID = 0, ชื่อ = จีน] Singletreenode [id = 3, pid = 2, ชื่อ = changsha], singletreenode [id = 4, pid = 1, ชื่อ = hubei], singletreenode [id = 5, pid = 4, ชื่อ = wuhan], singletreenode [id = 7, pid = 6, ชื่อ = แคลิฟอร์เนีย]
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับรหัสการแปลงของโครงสร้างเมนูต้นไม้สองรายการของการเขียนโปรแกรม Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงเว็บไซต์นี้ต่อไปได้:
การใช้งาน Java เพื่อสร้างตัวอย่างโค้ดที่สมบูรณ์ของส่วนหัวของ Tree Excel
ภาษา Java อธิบายถึงความลึกและความกว้างของต้นไม้ไบนารี
ตัวอย่างรหัสที่สมบูรณ์ของอัลกอริทึม Java เพื่อใช้ต้นไม้สีแดงและสีดำ
หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น!