java動(dòng)態(tài)樹(shù)形菜單代碼 java動(dòng)態(tài)樹(shù)層級(jí)展示

如何用Java實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)啊?

package tree;

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到城中網(wǎng)站設(shè)計(jì)與城中網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋城中地區(qū)。

import java.util.LinkedList;

import java.util.List;

/**

* 功能:把一個(gè)數(shù)組的值存入二叉樹(shù)中,然后進(jìn)行3種方式的遍歷

*

* 參考資料0:數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)嚴(yán)蔚敏

*

* 參考資料1:

*

* 參考資料2:

*

* @author ocaicai@yeah.net @date: 2011-5-17

*

*/

public class BinTreeTraverse2 {

private int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

private static ListNode nodeList = null;

/**

* 內(nèi)部類:節(jié)點(diǎn)

*

* @author ocaicai@yeah.net @date: 2011-5-17

*

*/

private static class Node {

Node leftChild;

Node rightChild;

int data;

Node(int newData) {

leftChild = null;

rightChild = null;

data = newData;

}

}

public void createBinTree() {

nodeList = new LinkedListNode();

// 將一個(gè)數(shù)組的值依次轉(zhuǎn)換為Node節(jié)點(diǎn)

for (int nodeIndex = 0; nodeIndex array.length; nodeIndex++) {

nodeList.add(new Node(array[nodeIndex]));

}

// 對(duì)前l(fā)astParentIndex-1個(gè)父節(jié)點(diǎn)按照父節(jié)點(diǎn)與孩子節(jié)點(diǎn)的數(shù)字關(guān)系建立二叉樹(shù)

for (int parentIndex = 0; parentIndex array.length / 2 - 1; parentIndex++) {

// 左孩子

nodeList.get(parentIndex).leftChild = nodeList

.get(parentIndex * 2 + 1);

// 右孩子

nodeList.get(parentIndex).rightChild = nodeList

.get(parentIndex * 2 + 2);

}

// 最后一個(gè)父節(jié)點(diǎn):因?yàn)樽詈笠粋€(gè)父節(jié)點(diǎn)可能沒(méi)有右孩子,所以單獨(dú)拿出來(lái)處理

int lastParentIndex = array.length / 2 - 1;

// 左孩子

nodeList.get(lastParentIndex).leftChild = nodeList

.get(lastParentIndex * 2 + 1);

// 右孩子,如果數(shù)組的長(zhǎng)度為奇數(shù)才建立右孩子

if (array.length % 2 == 1) {

nodeList.get(lastParentIndex).rightChild = nodeList

.get(lastParentIndex * 2 + 2);

}

}

/**

* 先序遍歷

*

* 這三種不同的遍歷結(jié)構(gòu)都是一樣的,只是先后順序不一樣而已

*

* @param node

* 遍歷的節(jié)點(diǎn)

*/

public static void preOrderTraverse(Node node) {

if (node == null)

return;

System.out.print(node.data + " ");

preOrderTraverse(node.leftChild);

preOrderTraverse(node.rightChild);

}

/**

* 中序遍歷

*

* 這三種不同的遍歷結(jié)構(gòu)都是一樣的,只是先后順序不一樣而已

*

* @param node

* 遍歷的節(jié)點(diǎn)

*/

public static void inOrderTraverse(Node node) {

if (node == null)

return;

inOrderTraverse(node.leftChild);

System.out.print(node.data + " ");

inOrderTraverse(node.rightChild);

}

/**

* 后序遍歷

*

* 這三種不同的遍歷結(jié)構(gòu)都是一樣的,只是先后順序不一樣而已

*

* @param node

* 遍歷的節(jié)點(diǎn)

*/

public static void postOrderTraverse(Node node) {

if (node == null)

return;

postOrderTraverse(node.leftChild);

postOrderTraverse(node.rightChild);

System.out.print(node.data + " ");

}

public static void main(String[] args) {

BinTreeTraverse2 binTree = new BinTreeTraverse2();

binTree.createBinTree();

// nodeList中第0個(gè)索引處的值即為根節(jié)點(diǎn)

Node root = nodeList.get(0);

System.out.println("先序遍歷:");

preOrderTraverse(root);

System.out.println();

System.out.println("中序遍歷:");

inOrderTraverse(root);

System.out.println();

System.out.println("后序遍歷:");

postOrderTraverse(root);

}

}

JSP動(dòng)態(tài)樹(shù)形菜單,菜單項(xiàng)從數(shù)據(jù)庫(kù)中獲得

jsp動(dòng)態(tài)樹(shù)形菜單須用到遞歸算法,比如在數(shù)據(jù)庫(kù)有張表,parent表,parent的字段有id,name,depth,leve,ID自增,depth設(shè)置為級(jí)數(shù),如這條數(shù)據(jù)最大,為0,如為字菜單就為1,而leve就指定它父節(jié)點(diǎn)的id,給段代碼自己可以摸索下 public Vector getModuleTree()

{

Vector pclass = new Vector();

try

{

stmt =con.createStatement();

String sql = "select * from Module where parentid = 0";

rs = stmt.executeQuery(sql);

Module cvo = null;

while(rs.next())

{

cvo = new Module();

cvo.setModule_id(rs.getInt("Module_id"));

cvo.setModule_name(rs.getString("Module_name"));

cvo.setModule_url(rs.getString("Module_url"));

cvo.setParentid(rs.getInt("parentid")); cvo.setRootid(rs.getInt("rootid")); cvo.setDepth(rs.getInt("depth")); pclass.add(cvo);

}

for (int i = 0; i pclass.size(); i++)

{

Module pcvo = (Module) pclass.get(i);

ShowTreeMenu(pcvo);

}

con.commit(); } catch (SQLException e)

{

e.printStackTrace();

} finally

{

try

{

if(rs!=null)

{

rs.close();

}

if(stmt!=null)

{

stmt.close();

}

if(con!=null)

{

con.close();

}

}

catch (SQLException e)

{

e.printStackTrace();

}

}

return classList;

}

public void ShowTreeMenu(Module c)

{

Module ccvo = null;

String sql = "select * from Module where parentid = " + c.getModule_id();

Vector cclass = new Vector();

try

{

Module cvotemp;

stmt =con.createStatement();

rs = stmt.executeQuery(sql);

while(rs.next())

{

cvotemp = new Module();

cvotemp.setModule_id(rs.getInt("Module_id"));

cvotemp.setModule_name(rs.getString("Module_name"));

cvotemp.setModule_url(rs.getString("Module_url"));

cvotemp.setParentid(rs.getInt("parentid")); cvotemp.setRootid(rs.getInt("rootid")); cvotemp.setDepth(rs.getInt("depth")); cclass.add(cvotemp);

}

System.out.println(cclass.size()+"(((((((((((((((((((((((((9");

if (cclass.size() 0)

{

c.setHasChild("have");

classList.add(c);

for (int j = 0; j cclass.size(); j++)

{

ccvo = (Module) cclass.get(j);

ShowTreeMenu(ccvo);

} } else

{

classList.add(c);

}

} catch (SQLException e)

{

e.printStackTrace();

}

}

java如何實(shí)現(xiàn)二級(jí)樹(shù)形菜單動(dòng)態(tài)顯示。要求加載頁(yè)面時(shí)顯示一級(jí),點(diǎn)擊一級(jí)菜單再去數(shù)據(jù)庫(kù)查找出二級(jí)菜單

用json格式,異步請(qǐng)求,當(dāng)你點(diǎn)擊一級(jí)菜單的時(shí)候,js觸發(fā),通過(guò)ajax異步把相關(guān)參數(shù)傳到后臺(tái),查詢出來(lái)的數(shù)據(jù),然后封裝成json格式數(shù)據(jù)返回,js拿到數(shù)據(jù)后,通過(guò)js把數(shù)據(jù)設(shè)置到頁(yè)面相應(yīng)的地方!

java帶有checkbox的樹(shù)型菜單

div

style="width: 100%; height: 94%; float: left; background:#f7f7f1;overflow-y:auto;"

id="treeDiv"/div

script type="text/javascript"

var selectedNodeID = '';

var org_treeList = new dhtmlXTreeObject(document.getElementById('treeDiv'),"100%","100%",0);

org_treeList.setImagePath("%=path%/images/tree/");

org_treeList.enableIEImageFix(true);

org_treeList.enableCheckBoxes(false);

org_treeList.enableDragAndDrop(false);

org_treeList.enableCheckBoxes(1);

org_treeList.enableThreeStateCheckboxes(true);

org_treeList.attachEvent("onOpenStart", function (id, state) {

if(state == '0')

{

org_treeList.setItemImage(id, 'folderOpen.gif','loading.gif');

}

if(state =='1')

{

org_treeList.setItemImage(id, 'folderOpen.gif','folderClosed.gif');

}

return true;

});

org_treeList.setXMLAutoLoading("你的xml地址");

org_treeList.loadXML("你的XML地址");

/script

上面是頁(yè)面中的代碼 這樣的寫(xiě)法是動(dòng)態(tài)加載的, 你可以去下面的地址查看具體用法

當(dāng)前文章:java動(dòng)態(tài)樹(shù)形菜單代碼 java動(dòng)態(tài)樹(shù)層級(jí)展示
本文URL:http://muchs.cn/article4/ddcicoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣小程序開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站建設(shè)、Google網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司