導航:首頁 > 編程語言 > java創建一棵樹

java創建一棵樹

發布時間:2023-06-12 03:11:16

A. 樹在java中的應用有哪些

首先:樹與線性表、棧、隊列等線性結構不同,樹是一種非線性結構。一棵樹只有一個根節點,如果一棵樹有了多個根節點,那它已經不再是一棵樹了,而是多棵樹的集合,也被稱為森林。
其次:java中樹的應用主要有:菜單樹,還有許可權樹,商品分類列表也是樹結構。

B. 數據結構 如何創建一棵樹,請給出c語言詳細代碼,謝謝

# include <stdio.h>
# include <stdlib.h
typedef struct BiTNode
{
char data;
struct BiTNode * lchild,* rchild;
}BiTNode, *BiTree;
//先序建立二叉樹中的節點
BiTree CreatBiTree()
{
BiTree T;
char ch;
fflush(stdin);
scanf("%c",&ch);
if(ch == '0')
{
return NULL;
}
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));
if(!T)
exit(1);
T->data=ch;
T->lchild = CreatBiTree();
T->rchild = CreatBiTree();
return T;
}
}

void PreTravel(BiTree T)
{
if(T)
{
printf("%c ",T->data);
PreTravel(T->lchild);
PreTravel(T->rchild);
}
}

int main()
{
BiTree T;
printf("先序建立二叉樹結點(『0』表示空):\n");
T = CreatBiTree();
printf("先序遍歷創建的二叉樹:\n");
PreTravel(T);
printf("\n");
return 0;
}
/*
結果:
------------------------
先序建立二叉樹結點(『0』表示空):
a
b
0
0
c
0
0
先序遍歷創建的二叉樹:
a b c
Press any key to continue
------------------------------
*/

C. 如何使用JTree

如何使用 Jtree (1)創建樹 (2)對節點的選擇做出響應 (3)自定義樹的外觀表現 (4)動態改變一棵樹 (5)創建樹的數據模型 (6)懶載入孩子 (7)如何寫 expansion linstener (8)如何寫 tree-will-expand listener 利用 JTree 類, 你可以顯示等級體系的數據。 一個 JTree 對象並沒有包含實際的數據; 它只是提供了數據的一個視圖。像其他非平凡的( nontrivial ) Swing 組件一樣,這 種 Jtree 通過查詢她的數據模型獲得數據。這是一個 Jtree : 如上面的圖片所顯示, Jtree 垂直顯示它的數據。樹中顯示的每一行包含一項數據,稱 之為節咐世點( node )。每顆樹有一個根節點( root node ),其他所有節點是它的子孫。默 認情況下,樹只顯示根節點,但是你可以設置改變默認顯示方式。一個節點可以擁有孩子也 可以不擁有任何子孫。我們稱那些可以擁有孩子(不管當前是否有孩子)的節點為「分支節 點」( branch nodes ),而不能擁有孩子的節點為「葉子節點」( leaf nodes )。 分支節點可以有任意多個孩子。通常,用戶可以通過點擊實現展開或者折疊分支節點, 使得他們的孩子可橋譽見或者不可見。 默認情況下, 除了根節點以外的所有分支節點默認呈現折 疊狀態。程序中,通過監聽 tree expansion 或者 tree-will-expand 事件可以檢測分支節點的 展開狀態。監聽事件在下面兩節內容中描述 How to Write a Tree Expansion Listener and How to Write a Tree-Will-Expand Listener . 在樹中, 一個節點可以通過 TreePath(一個囊括該節點和他所有祖先節點的路徑對象) 或者他的折疊行來識別。 展開節點( expanded node )就是一個非葉子節點,當敏簡段他的所有祖先都展開時,他將 顯示他的孩子。 折疊節點( collapsed node )是隱藏了孩子們得的節點。 隱藏節點( hidden node )就是折疊節點下的一個孩子 (1)創建一棵 Tree 這里是一個應用程序的截圖,上半部分展示了一個滾動面板( scroll pane )中的樹 ( Jtree )。 接下來的代碼是從 http://download.oracle.com/javase/tutorial/uiswing/examples/components/TreeDemoProj ect/src/components/TreeDemo.java 獲得,創建了一個 JTree 對象,並將之放到一個 scroll pane 上 Java 代碼 1. //Where instance variables are declared: 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... } private JTree tree; ... public TreeDemo() { ... DefaultMutableTreeNode top = new DefaultMutableTreeNode("The Java Series"); createNodes(top); tree = new JTree(top); ... jscrollPane treeView = new JScrollPane(tree); 這段代碼創建了一個 DefaultMutableTreeNode 實例作為根節點。 接著創建樹中剩下的其 他節點。創建完節點後,通過指定剛才創建的根節點為 JTree 構造函數的參數,創建一棵 樹。最後,將樹放到滾動面板中,這是一個通常的策略,因為需要顯示完一個樹,而展開樹 需要另外比較大的空間。 以下代碼創建根節點以下的節點 Java 代碼 1. private void createNodes(DefaultMutableTreeNode top) { 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. } //Language Spec book = new DefaultMutableTreeNode(new BookInfo ("The Java Language Specification", "jls.html")); category.add(book); //VM book = new DefaultMutableTreeNode(new BookInfo ("The Java Virtual Machine Specification", "vm.html")); category.add(book); category = new DefaultMutableTreeNode("Books for Java Implementers"); top.add(category); //...add more books for programmers... //JFC Swing Tutorial book = new DefaultMutableTreeNode(new BookInfo ("The JFC Swing Tutorial: A Guide to Constructing GUIs", "swingtutorial.html")); category.add(book); //Tutorial Continued book = new DefaultMutableTreeNode(new BookInfo ("The Java Tutorial Continued: The Rest of the JDK", "tutorialcont.html")); category.add(book); //original Tutorial book = new DefaultMutableTreeNode(new BookInfo ("The Java Tutorial: A Short Course on the Basics", "tutorial.html")); category.add(book); category = new DefaultMutableTreeNode("Books for Java Programmers"); top.add(category); DefaultMutableTreeNode category = null; DefaultMutableTreeNode book = null; DefaultMutableTreeNode 構造函數的參數是一個用戶自定義的類對象,它包含或指向 了關聯樹節點的數據。這個用戶對象可以是一個字元串,或者是一個自定義的類。如果它實 現了一個自定義對象, 你應該要重新實現覆蓋他的 toString 方法, 這樣他才能返回對應字元 串作為節點顯示的字元串。Jtree 默認情況下, 每個節點都是用 toString 的返回值作為顯示。 所以, toString 返回一些有意義的值是很重要的。 讓 有時候, 覆蓋 toString 方法是不可行的; 在某些場景你可以通過重寫 Jtree 的 convertValueToText 方法,映射模型對象到一個可顯 示的字元串。 例如,前面 demo 中的 BookInfo 類是一個自定義類,它包含了兩個欄位:書名和描述 該書本的 HTML 文件的 URL 路徑。 toString 方法也重新實現,返回書名。從而,每個節點 關聯了一個 BookInfo 對象,並且顯示書名。 總之,你可以調用 Jtree 的構造函數創建一棵樹,指定一個實現了 TreeNode 的類作為 參數。你應該盡量把這棵樹放到一個滾動面板中( scroll pane ),這樣樹就不會佔用太大 的空間。對於樹節點相應用戶點擊而展開和折疊的功能,你不需要做任何事情。但是,你一 定要添加一些代碼使得樹在用戶點擊選擇一個節點時能夠作出反應,例如: (2)對節點的選擇作出響應 對於樹節點的選擇做出響應是簡單的。 你可以實現一個樹節點選擇監聽器, 並且注冊在這棵 樹上。接下來的代碼顯示了 TreeDemo.java 中有關選擇的代碼: Java 代碼 1. //Where the tree is initialized: 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Object nodeInfo = node.getUserObject(); if (node.isLeaf()) { BookInfo book = (BookInfo)nodeInfo; if (node == null) //Nothing is selected. return; //Listen for when the selection changes. tree.addTreeSelectionListener(this); ... public void valueChanged(TreeSelectionEvent e) { //Returns the last path element of the selection. //This method is useful only when the selection model allows a single se lection. DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); tree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION); 21. 22. 23. 24. 25. } } displayURL(book.bookURL); } else { displayURL(helpURL); 上面的代碼執行了一下任務: 1 .獲得樹的默認 TreeSelectionModel (節點選擇模式),然後設置它,使得在某一 時刻只有一個節點被選中。 2 .注冊了一個事件處理器。事件處理器是一個實現了 TreeSelectionListener 介面的 對象。 3. 在事件處理器中,通過調用 Tree 的 getLastSelectedPathComponent 方法獲得選中 的節點。 4 .使用 getUserObject 方法獲得節點關聯的數據。(節點 node 是一個非平凡組件, 要通過它關聯的數據模型獲得真正的數據) 這里給出一些樹節點的圖片,分別通過 Java 、 Windows 和 MacOS 樣式繪得。 (依次為 java look 、 windows look 和 MacOS look ) 像之前圖片顯示一樣,一棵樹按照慣例,對於每個基點顯示了一個圖標和一些文字。像 我們簡短的展示一樣,你可以指定這些樣式。 一棵樹通常表現一些外觀和樣式特效, 通過不同的繪制圖形指示節點間的關系。 你可以 在限制范圍內自定義這些圖形。首先,你可以使用 tree.setRootVisible(true) 設置顯示根節 點或者 tree.setRootVisible(false) 隱藏根節點。其次,你可以使 用 tree.setShowsRootHandles(true) 請求設置樹的頂層節點具有句柄( +- 圖標,點擊句柄 使其展開折疊)。如果頂層節點是根節點的話,需要保證它是可視的,如果是頂層節點則每 個孩子都顯示句柄。 如果你使用 Java 樣式,你可以自定是否在節點間顯示行線來表現他們的關系。默認情 況下, Java 樣式使用「角線」(類似「 L 」)。通過設置 Jtree.lineStyle 的客戶端屬性,你可以 指定一種不同的標准。例如,通過以下代碼,這只 JAVA 樣式僅使用水平線隔開一組節點: Java 代碼 1. tree.putClientProperty(「Jtree.lineStyle」, 「Horizontal」); 指定 JAVA 樣式在節點間不顯示任何行線,則使用以下代碼: Java 代碼 1. tree.putClientProperty(「Jtree.lineStyle」, 「None」); (3)自定義樹的外觀表現 接下來的一些截圖顯示了設置不同的 Jtree.lineStyle 屬性(使用 JAVA 樣式) 不管你使用那種樣式( java 、 windows 、 mac ) , 默認情況下,節點顯示的圖標決 定於節點是否為葉子節點和是否可展開。例如,在 windwos 樣式中,每個葉子節點的默認 圖標是一個點;在 JAVA 樣式中,葉子節點默認圖標是一個類似白紙的符號。在所有樣式 中,分支節點被一個文件夾符號所標識。不同樣式對於可展開分支和對應的可折疊分支,可 能有不同的圖標。 你可以很容易的改變葉子節點、可展開分支節點和可折疊分支節點的默認圖標。 如果要 這樣做的話,首先,你要創建一個 DefaultTreeCellRenderer 實例。你總是可以創建自己 的 TreeCellRender ,讓你喜歡的任何組件重復利用。接著,通過調用以下一個或多個方法 去指定圖標: setLeafIcon (對於葉子節點), setOpenIcon (對於可展開分支節 點), setClosedIcon (對於可折疊節點)。如果你想要這棵樹中各種節點都不顯示圖標, 你就要指定圖標為 null 。 一定你創建了這些圖標,使用樹的 setCellRender 方法去指定這 個 DefaultTreeCellRender 來繪制它的節點。這里有一個來自 TreeIconDemo 的例子 Java 代碼 1. ImageIcon leafIcon = createImageIcon("images/middle.gif"); 2. if (leafIcon != null) { 3. 4. 5. 6. DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); renderer.setLeafIcon(leafIcon); tree.setCellRenderer(renderer); 7. } 這是一個截圖: 如果你想更精巧的控制節點圖標,或者你想提供一些工具,你可以創 建 DefaultTreeCellRender 的子類,然後覆蓋他的 getTreeCellRendererComponent 方法。 因為 DefaultTreeCellRenderer 是 Jlabel 的一個子類,你可以使用任何 Jlabel 的方法,例如 setIcon 。 下面代碼來自 TreeIconDemo2.java ,創建了一個單元繪制器( cell renderer ),它根 據節點的文本數據是否包含單詞「 Tutorial 」來改變了葉子節點的圖標。 這個 renderer 同樣可 以指定提示文本( tool-tip ) --- 滑鼠移到上面,出現提示。

D. 關於如何在java的web應用獲取伺服器資源

我曾經試圖在applet中通過讀取伺服器上的一個xml文件來創建一棵樹型結構。在尋找了很多回資料後,發覺這答種做法好像行不通。Applet是運行在客戶端的腳本,個人認為很難或者是無法獲取伺服器端的資源。

通過這次的學習,我掌握了幾種獲取伺服器資源的方法。歸納如下:

1.在servlet中通過getServletContext().getRealPath(「」)可以獲得伺服器某個資源的真實路徑,然後可以通過創建URL,或者創建IO流來獲取資源。

2.在servlet中通過getServletContext().getResourceAsStream(「」)來獲得資源流。

3.在jsp中通過pageContext來獲得ServletContext對象pageContext.getServletContext(),然後用1,2種方法都可以獲得伺服器資源。

4.在一般的javaBean中,通過this.getClass().getResourceAsStream(「」)可以獲得和javaBean的class文件一個目錄下的資源。

E. 如何用java列印一棵樹

import java.util.LinkedList;/**
* 需求:按層列印一棵樹
* 說明:樹是保存在一個鏈表中
* created by wangjunfu on 2017-05-25. */
public class TreeNode {
String data;
TreeNode parent;
LinkedList<TreeNode> childlist;

TreeNode() {
data = null;
childlist = new LinkedList();
parent = null;
} //遞歸顯示並列印一棵樹
private static void displayTree(TreeNode f, int level) {

String preStr = ""; // 列印前綴
for (int i = 0; i < level; i++) {
preStr += " ";
} for (int i = 0; i < f.childlist.size(); i++) {
TreeNode t = f.childlist.get(i);
System.out.println(preStr + "-" + t.data); if (!t.childlist.isEmpty()) {
displayTree(t, level + 1);
}
}
}
}

F. java怎麼遞歸出一棵樹來,表結構為 int id,int pid,varchar text,varchar url,

要遞歸樹結構必須要層級關系。你給的欄位是什麼表示?

閱讀全文

與java創建一棵樹相關的資料

熱點內容
dede工具 瀏覽:507
5g網盟app怎麼下載 瀏覽:486
微信備份老是連接中斷 瀏覽:886
出台多少份文件 瀏覽:380
鞋子怎麼搭配衣服的app 瀏覽:755
文件名使用的通配符的符號是什麼 瀏覽:916
lol分卷文件損壞怎麼辦 瀏覽:276
6分管車螺紋怎麼編程 瀏覽:732
海口農商銀行信用卡app是什麼 瀏覽:770
win10任務欄文件夾我的電腦 瀏覽:14
安卓nba2k18 瀏覽:776
文件夾密碼怎麼修改密碼 瀏覽:271
蘋果數據中心用什麼伺服器 瀏覽:769
省內圓通快遞寄文件夾需要多少錢 瀏覽:740
iphone程序加密 瀏覽:884
win10文件夾調整文件行高 瀏覽:681
創意手繪教程 瀏覽:754
微信刪除帳號信息 瀏覽:596
mysql操作類文件 瀏覽:649
繞過xp密碼 瀏覽:158

友情鏈接