导航:首页 > 编程语言 > 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创建一棵树相关的资料

热点内容
app充值请联系itunes 浏览:678
矢量app和cdr哪个好 浏览:85
系统文件坏了如何修复 浏览:20
键盘系统文件误删 浏览:738
白金英雄坛所有版本 浏览:842
ps文件转hsj 浏览:382
哪个网站电影 浏览:490
ps4游戏文件格式名称 浏览:290
caxa教程2007 浏览:832
新点是什么小说网站 浏览:753
魔兽世界冰封王座3版本转换器 浏览:418
苹果3dtouch软件 浏览:979
qq视频在哪个文件夹里面 浏览:740
请帖制作网站java源码 浏览:257
自己的网站怎么做兼职 浏览:608
医院基础数据是什么 浏览:744
为什么数据线没有typec接口 浏览:39
苹果手机文件管家 浏览:187
qq头像男生水里 浏览:633
联想电脑初始密码 浏览:517

友情链接