在搞一个实验,本来是基于“树结构”的,于是,我是使用左子女右兄弟的办法去构建一棵树,而且,在对树的各种操作也是基于它是一个树,是基于左子女右兄弟的办法,树如图但是,现在导师要我改成“层次结构”,有点类似于图,比如这样那么,这个该怎么办??首先,我就无法通过左子女右兄弟的方法构建这个层次结构以及进行一些操作(如寻找子女,寻找父母等),各位高手,这样的一个层次结构该如何构建??该如何进行子女、父母查找等原本用于树的基本方法??
大家给我说下思想,我们讨论一下,代码应该不难写
附上左子女右兄弟的代码构建树方法:
//采用左子女右兄弟的办法插入结点
public void InsertChild(TreeNode newNode)
{
if(current.firstChild==null)
current.firstChild=newNode;
else
{
p=current.firstChild;
while(p.nextBro!=null)
p=p.nextBro;
p.nextBro=newNode;
}
} //插入结点方法1
public void Insert(TreeNode treeNode)
{
if(root==null)
{
root=current=treeNode;
}
else
{
level=current.Level+1;
Insert(current,treeNode,level);
}
}
//插入结点方法2
public void Insert(TreeNode root,TreeNode treeNode,int level)
{
int index=JOptionPane.showConfirmDialog(null,root.data+"是否要插入子女"+treeNode.data,"判断",JOptionPane.YES_NO_OPTION);
if(index==JOptionPane.YES_OPTION)
{
current=root;
showtree.addElement(treeNode);
InsertChild(treeNode);
treeNode.Level=level;
mQueue.enQueue(treeNode);
}
else if(index==JOptionPane.NO_OPTION)
{
TreeNode node=(TreeNode)mQueue.deQueue();
Insert(node,treeNode,node.Level+1);
}
} 主方法构建时通过调用Insert进入的,TreeNode是结点的类,形式为
public class TreeNode
{
//结点值
String data;
int Level;
TreeNode firstChild;
TreeNode nextBro;
TreeNode(String h)
{
data=h;
}
} 大家帮我想想那样的层次结构怎么定义?!?!突然发现我没分了,但是大家帮帮我,这个也很能锻炼人的,呵呵
大家给我说下思想,我们讨论一下,代码应该不难写
附上左子女右兄弟的代码构建树方法:
//采用左子女右兄弟的办法插入结点
public void InsertChild(TreeNode newNode)
{
if(current.firstChild==null)
current.firstChild=newNode;
else
{
p=current.firstChild;
while(p.nextBro!=null)
p=p.nextBro;
p.nextBro=newNode;
}
} //插入结点方法1
public void Insert(TreeNode treeNode)
{
if(root==null)
{
root=current=treeNode;
}
else
{
level=current.Level+1;
Insert(current,treeNode,level);
}
}
//插入结点方法2
public void Insert(TreeNode root,TreeNode treeNode,int level)
{
int index=JOptionPane.showConfirmDialog(null,root.data+"是否要插入子女"+treeNode.data,"判断",JOptionPane.YES_NO_OPTION);
if(index==JOptionPane.YES_OPTION)
{
current=root;
showtree.addElement(treeNode);
InsertChild(treeNode);
treeNode.Level=level;
mQueue.enQueue(treeNode);
}
else if(index==JOptionPane.NO_OPTION)
{
TreeNode node=(TreeNode)mQueue.deQueue();
Insert(node,treeNode,node.Level+1);
}
} 主方法构建时通过调用Insert进入的,TreeNode是结点的类,形式为
public class TreeNode
{
//结点值
String data;
int Level;
TreeNode firstChild;
TreeNode nextBro;
TreeNode(String h)
{
data=h;
}
} 大家帮我想想那样的层次结构怎么定义?!?!突然发现我没分了,但是大家帮帮我,这个也很能锻炼人的,呵呵
解决方案 »
- java的Comparable不支持中文吗
- 在哪里可以下载到linux的jdk 急!!!
- 一个DAO,能编译通过,但是就是执行不了,希望大家能帮我看看
- 有谁用JAVA操作过PDW文件?
- 关于如何在STACK中增加数组元素
- 接口问题?exitItem.addActionListener(new ActionListener(){})
- 请教如何用eclipse开发C C++ 安装了CDT 如何配置GCC GND?
- 为何applet在jbuilder7下的appletviewer能看,在网页中却出err
- 誰能給我J2SE DK 1.4.1_01下載的URL
- 如何能缩减Java数组二分法找值的代码
- java中锁对象的题目
- 计数器问题?
第二个图看不到吗,我再贴一次如果图显示不出来的话,直接点下面的连接:
http://hiphotos.baidu.com/%CE%D2%C3%C7%B5%C4%D0%A1%CD%E5/pic/item/2856e645b2226d6c500ffe05.jpeg
我这个“图”,其实我还是更喜欢称它是“层次结构”不考虑方向,其实也就是单向的,方向是从低层次向高层次。上面是低层次。请帮我想个思想,谢谢了
{
private List<Node> parentNode;
private List<Node> childNode;
}我先说说我的想法, 不知道是你要的结果不? Node类里有两个属性,一个父 一个子(不知道是只有左右孩子,还是一个, 还是可以有多个),我的想法是如果 parentNode 为null 则有最低层。 childNode 为null 则无孩子。 这只是一种结构, 或者 : 你把最低层拿出来做一个单独的类(和数据的链表有的相似的那种)。