java中如何建立一个java树,请详解?

如何用java中的树类创建一个多叉树~

结构
class Tree
{
int NodeId;
String NodeName;
Tree ParentTree;
}

java构造二叉树,可以通过链表来构造,如下代码:
public class BinTree {public final static int MAX=40;BinTree []elements = new BinTree[MAX];//层次遍历时保存各个节点 int front;//层次遍历时队首 int rear;//层次遍历时队尾private Object data; //数据元数private BinTree left,right; //指向左,右孩子结点的链public BinTree(){}public BinTree(Object data){ //构造有值结点 this.data = data; left = right = null;}public BinTree(Object data,BinTree left,BinTree right){ //构造有值结点 this.data = data; this.left = left; this.right = right;}public String toString(){ return data.toString();}//前序遍历二叉树public static void preOrder(BinTree parent){ if(parent == null) return; System.out.print(parent.data+" "); preOrder(parent.left); preOrder(parent.right);}//中序遍历二叉树public void inOrder(BinTree parent){ if(parent == null) return; inOrder(parent.left); System.out.print(parent.data+" "); inOrder(parent.right);}//后序遍历二叉树public void postOrder(BinTree parent){ if(parent == null) return; postOrder(parent.left); postOrder(parent.right); System.out.print(parent.data+" ");}// 层次遍历二叉树 public void LayerOrder(BinTree parent){ elements[0]=parent; front=0;rear=1; while(front<rear) { try { if(elements[front].data!=null) { System.out.print(elements[front].data + " "); if(elements[front].left!=null) elements[rear++]=elements[front].left; if(elements[front].right!=null) elements[rear++]=elements[front].right; front++; } }catch(Exception e){break;} }}//返回树的叶节点个数public int leaves(){ if(this == null) return 0; if(left == null&&right == null) return 1; return (left == null ? 0 : left.leaves())+(right == null ? 0 : right.leaves());}//结果返回树的高度public int height(){ int heightOfTree; if(this == null) return -1; int leftHeight = (left == null ? 0 : left.height()); int rightHeight = (right == null ? 0 : right.height()); heightOfTree = leftHeight<rightHeight?rightHeight:leftHeight; return 1 + heightOfTree;}//如果对象不在树中,结果返回-1;否则结果返回该对象在树中所处的层次,规定根节点为第一层public int level(Object object){ int levelInTree; if(this == null) return -1; if(object == data) return 1;//规定根节点为第一层 int leftLevel = (left == null?-1:left.level(object)); int rightLevel = (right == null?-1:right.level(object)); if(leftLevel<0&&rightLevel<0) return -1; levelInTree = leftLevel<rightLevel?rightLevel:leftLevel; return 1+levelInTree; }//将树中的每个节点的孩子对换位置public void reflect(){ if(this == null) return; if(left != null) left.reflect(); if(right != null) right.reflect(); BinTree temp = left; left = right; right = temp;}// 将树中的所有节点移走,并输出移走的节点public void defoliate(){ if(this == null) return; //若本节点是叶节点,则将其移走 if(left==null&&right == null) { System.out.print(this + " "); data = null; return; } //移走左子树若其存在 if(left!=null){ left.defoliate(); left = null; } //移走本节点,放在中间表示中跟移走... String innerNode += this + " "; data = null; //移走右子树若其存在 if(right!=null){ right.defoliate(); right = null; }} /*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stub BinTree e = new BinTree("E"); BinTree g = new BinTree("G"); BinTree h = new BinTree("H"); BinTree i = new BinTree("I"); BinTree d = new BinTree("D",null,g); BinTree f = new BinTree("F",h,i); BinTree b = new BinTree("B",d,e); BinTree c = new BinTree("C",f,null); BinTree tree = new BinTree("A",b,c); System.out.println("前序遍历二叉树结果: "); tree.preOrder(tree); System.out.println(); System.out.println("中序遍历二叉树结果: "); tree.inOrder(tree); System.out.println(); System.out.println("后序遍历二叉树结果: "); tree.postOrder(tree); System.out.println(); System.out.println("层次遍历二叉树结果: "); tree.LayerOrder(tree); System.out.println(); System.out.println("F所在的层次: "+tree.level("F")); System.out.println("这棵二叉树的高度: "+tree.height()); System.out.println("--------------------------------------"); tree.reflect(); System.out.println("交换每个节点的孩子节点后......"); System.out.println("前序遍历二叉树结果: "); tree.preOrder(tree); System.out.println(); System.out.println("中序遍历二叉树结果: "); tree.inOrder(tree); System.out.println(); System.out.println("后序遍历二叉树结果: "); tree.postOrder(tree); System.out.println(); System.out.println("层次遍历二叉树结果: "); tree.LayerOrder(tree); System.out.println(); System.out.println("F所在的层次: "+tree.level("F")); System.out.println("这棵二叉树的高度: "+tree.height());}

import java.awt.*;
import javax.swing.*;
class TreeDemo extends JFrame
{
public TreeDemo()
{
setSize(400,300);
setTitle("演示怎样使用JTree");
show();
JScrollPane jPanel=new JScrollPane();
getContentPane().add(jPanel);
JTree jtree=new JTree();
jPanel.getViewport().add(jtree,null);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public class Example5_25
{
public static void main(String[] args)
{
TreeDemo frame=new TreeDemo();
}
}

其中JScrollPane是一个带滚动条的面板类。

将对象加入到带滚动条的面板类中,在将已建的数放入到其中。

就可建立一个系统默认的树结构。



jav图书馆最新后缀
答:是.jar或者.jmod。这两种文件格式都可以在Java环境中使用,并且都可以包含许多类文件和其他资源。

我想学习JAVA编程语言
答:我想学习JAVA编程语言但是我没有一点编程基础整个就是一个菜鸟请各位姐姐哥哥们给我个很好的建议,我需要做哪些准备?一开始学习哪个版本的JAVA书籍比较好?请各位给小弟一个很好的建议帮... 我想学习JAVA编程语言但是我没有一点编程基础整个...

JAV是什么东西?
答:一. Java的由来 当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢?Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境...

java开发要学哪些知识和技能呢?
答:在学习java软件开发的时候第二个阶段要学习的课程主要就是学习项目需求的分析,需要用到的技术点的分析,概要的设计;项目用到的技术点的学习,包括了javai/0流的处理,socket网络编程,多线程,泛型标准SQL,JDBC等;掌握JUnit...

jav设计流程问题
答:面向对象思想要培养,是一个漫长过程,所有的东西都封装为对象,只是好的封装是很人性化的,不仅用起来方便,而且理解也方便。你在把整个软件分为部分的时候就已经把不同的部分看作的不同的对象,在具体设计的时候,根据需要...

什么是Jav图书馆?
答:Jav图书馆是一个致力于Java学习的免费的程序员学习资源网站的意思。在这个网站上,程序员们能够学习到从Java入门到高级开发的所有知识和技能,并且还有大量的免费的教程和案例供程序员们使用。Jav图书馆为Java初学者和中级开发...

Java中线程模型由虚拟的CPU,代码与数据构成。该模型是由jav 】类进行...
答:【答案】:Thread Thread 解析:本题考查线程模型。Java中的线程模型包含三部分:一个虚拟的CPU、该 CPU执行的代码、代码所操作的数据。该线程模型在Java中是由java.lang.Thread类进行定义和描述的。程序中的线程都是Thread类...

javalibraryjavlib
答:关于javalibrary,javlib这个很多人还不知道,今天来为大家解答以上的问题,现在让我们一起来看看吧!1、去查询一下。2、在万域网注册后,查查。

如何用java打开.jav后缀的文件?
答:你把后缀改一下以java为后缀的名称,使用Eclipse打开就可以了。

javalibrary地址多少
答:JavaLibrary是Java编程中常用的工具包,能够提供各种功能模块,例如GUI(图形用户界面)组件、网络操作、数据库操作等等。这些JavaLibrary的存在极大地方便了Java开发人员的开发过程,并且被广泛应用于各个领域。点击学习大厂名师精品...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网