java中多叉树(tree)的生成与显示
来源:互联网 发布:有关软件侵权案例 编辑:程序博客网 时间:2024/06/05 20:14
先看看多叉树的表示吧。
一. 多叉树的表示:
由于要表示多个孩子,不能像二叉树那样一个leftchild,一个rightchild。当然你也可以选择采用孩子兄弟表示法来将多叉树转化成二叉树。但java提供了链表功能,能够允许设置不定数目的孩子,极大方便了多叉树的表示和实现。下面就是多叉树采用链表来表示孩子的表示方法:
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); } } }注意到,改程序用到了递归来深度遍历,打印上采用了缩进的方式来显示父子关系。要注意到的是,为了让该程序能打印出总的根,在树的生成时,第一个节点设置为空,其孩子节点指向你的原来的根。这样,打印出来才是完整的。
三. 多叉树的生成:
多叉树的生成是树的应用的核心。多叉树的目的就是用来表示可能拥有多孩子的树状结构。
该实现方法主要基于两个方面:
1) java对象赋值是reference关系,改变的是同一棵树;
2) current指针总是指向要进行分析的节点,以便树的生长。
大体算法如下:
whole_root = root;
current = root;
while(list != null)
{
temp = list.pop();
current.childlist.add(temp);
current = temp;
// your program
}
这样就能够生成一棵以whole_root为根的树,采用displaytree()就可以打印出来了。
- java中多叉树(tree)的生成与显示
- java中生成tree,显示在页面上
- JAVA递归生成tree树
- java web从零单排第二十一期《Hibernate》主键的生成方式,用户增加与显示用户列表
- Easy-UI Tree的生成
- 如何实现图片的随机生成与显示(转载)
- C#如何实现图片的随机生成与显示(转载)
- TensorFlow TFRecord数据集的生成与显示
- java生成带logo的二维码及前端显示二维码
- java SWT 开发,递归生成Tree
- java 生成 树形结构数据(tree)
- zxing二维码的生成与解码(java)
- java条形码的生成与扫描
- zxing二维码的生成与解码(java)
- Java实现二维码的生成与识别
- Java:身份证号的校验与生成
- ExtJS在生成Tree时图片不显示问题
- 用java显示LDAP Entry Tree
- EFI介绍之——框架结构(Framework)
- 使用frameset布局时,注销时页面间的跳转问题
- JS设置 设为主页 加入收藏(转)
- linux resource
- java GMT 日期转换
- java中多叉树(tree)的生成与显示
- Redis and Ruby
- android 2.2 编译 jdk1.5 问题
- OPC质量列表
- 压缩与解压Zip(PHPZip类)
- Flex 与Java Servlet通信并截获IP
- Apache+PHP+Mysql环境搭建之二:安装Apache
- 转帖:IE6, IE7, IE8, Firefox 兼容的“加入收藏夹”脚本
- org.hibernate.TransientObjectException: object references an unsaved transient instance - save the t