怎么用Java语言来实现二叉树啊我现在编了一个程序却不能运行出结果,谁能帮我!

怎么用Java语言来实现二叉树啊我现在编了一个程序却不能运行出结果,谁能帮我!,第1张

终止搞定,inorder和postorder分别是中序和后序

public class Test

{

static String inorder = "287413695";//"BDEFACHG"; //已知中序

static String postorder = "874296531";//"FEDBHGCA"; //已知后序

static Node root;

static class Node

{

public Node(char divideChar)

{

thisdata = divideChar;

}

Node left;

Node right;

char data;

}

static Node divide(String in,String post,Node node)

{

if (in == null || inlength() < 1 || post == null || postlength() < 1)

return null;

String left = "";

char divideChar = postcharAt(postlength()-1);

if(inindexOf(divideChar) != -1)

left = insubstring(0, inindexOf(divideChar));

String right = insubstring(inindexOf(divideChar) + 1);

if(node == null)

root = node = new Node(divideChar);

else

node = new Node(divideChar);

if (left != null)

{

if(leftlength() > 1)

nodeleft = divide(left, postsubstring(0,leftlength()),node);

else if(leftlength() == 1)

nodeleft = new Node(leftcharAt(0));

}

if (right != null)

{

if(rightlength() > 1)

noderight = divide(right, postsubstring(leftlength(),postlength()-1),node);

else if(rightlength() == 1)

noderight = new Node(rightcharAt(0));

}

return node;

}

static void preorder(Node node)

{

if(node == null) return;

Systemoutprintln(nodedata);

if(nodeleft != null) preorder(nodeleft);

if(noderight != null) preorder(noderight);

}

public static void main(String[] args)

{

root = divide(inorder, postorder,root);

preorder(root); //打印前序

}

}

这个要看你是怎么实现的TreeModel,无非三种方式:

1 自己实现TreeModel,这样的话,节点对象就可以直接使用File对象。获取路径也就不成问题了。

2 自己实现treeNode接口,这样的话,可以在treeNode接口中增加File对象的引用。

3 用defaultMutableTreeNode来实现的,那么,可以使用setUserObject的方法,将File对象设置在TreeNode中,然后就可以在得到节点后,使用getUserObject来获取了。

大致如此吧,估计你用的是第3种,因为很少有人愿意重写TreeCellRenderer的,呵呵。但最佳的办法其实就是第一种。

这样的用简单的判断就行了 :先判断PID为空的,这个是父节点,然后取出PID为空的Id当做取其子节点的父节点,一次判断就行了,结合列子:取PID为空的ID即1,2,然后把取PId等于1和2的ID即345和6然后分别挂在1和2下,345就是1的子节点,6是2的子节点,有多节点的一次类推(这只是其中一个简单的方法)

实现过程中需要调用Javac的API接口获取抽象语法树。

获得抽象语法树的过程为:代码,词法分析,语法分析,AST词法分析。把字符串形式的代码转换为令牌流。

拿到了抽象语法树,等于拿到了整份的代码,我们可以对所有的代码进行扫描,可以在特定的代码中写入一些逻辑。

这是代码,你可以自己调试一下。

数据结构如下:

CREATE TABLE dtree (

id int,

pid int,

name varchar(200),

url varchar(200),

title varchar(200),

target varchar(200),

icon varchar(200),

iconopen varchar(200),

opened bit);

为了实现获取数据库变量功能,需要建立一个DTree类,并编译生成CLASS文件,放入\WEB-INF\classes文件夹下。

DTree类代码如下:

package work3;

public class DTree {

private int id;

private int pid;

private String name;

private String url;

private String title;

private String target;

private String icon;

private String iconOpen;

private int opened;

public int getId() {

return id;

}

public void setId(int id) {

thisid = id;

}

public int getPid() {

return pid;

}

public void setPid(int pid) {

thispid = pid;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

thisurl = url;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

thistitle = title;

}

public String getTarget() {

return target;

}

public void setTarget(String target) {

thistarget = target;

}

public String getIcon() {

return icon;

}

public void setIcon(String icon) {

thisicon = icon;

}

public String getIconOpen() {

return iconOpen;

}

public void setIconOpen(String iconOpen) {

thisiconOpen = iconOpen;

}

public int getOpened() {

return opened;

}

public void setOpened(int opened) {

thisopened = opened;

}

}

work3jsp代码如下:

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>

<%@ page import="javasql"%>

<jsp:useBean id='settree' scope="application" class="work3DTree" />

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN"

">

设计树: 自己定制 TreeModel (写一个类实现 TreeModel 接口,可以参考或者继承 DefaultTreeModel

获取到李四: 是说当用户选中李四的时候获取到这个“选中了李四的事件”么?

jtreegetSelectionModel()addTreeSelectionListener(TreeSelectionListener)

自己写一个类实现 TreeSelectionListener

以上就是关于怎么用Java语言来实现二叉树啊我现在编了一个程序却不能运行出结果,谁能帮我!全部的内容,包括:怎么用Java语言来实现二叉树啊我现在编了一个程序却不能运行出结果,谁能帮我!、Java资源管理器中树形文件目录的路径取得问题、java代码怎样查出树形结构的某个节点的所有子孙节点要算法实现!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9606488.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存