• 大小: 3.89 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-11-18
  • 语言: Java
  • 标签: java      数据结构  

资源简介

把字母表示的图状数据结构转换为树状数据结构
采用DefaultMutableTreeNode类的方式建立一个图状数据结构,顶点为字母A、B、C等,你也可以自己设计。可以帮助你把一个复杂的网状关系变成一个条理化的树状关系,并通过一个Tree显示出来。很不可思议吧?看看就知道了!

资源截图

代码片段和文件信息

import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.swing.Jframe;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.*;
import javax.swing.tree.DefaultMutableTreeNode;
import java.util.*;
import javax.swing.tree.*;


public class ChangeGraphtoTree {

    public ChangeGraphtoTree() {
    }

    public static void main(String[] args) {
        Ordered ord = new Ordered();
        GraphVertex gpnode = new GraphVertex();
        IDlinkValue linkvalue = new IDlinkValue();
        //通过有序偶对建立图状数据结构,并分配长度属性
        new Ordered(“A“ “B“ new OrderValue(1));
        new Ordered(“B“ “D“ new OrderValue(2));
        new Ordered(“D“ “E“ new OrderValue(3));
        new Ordered(“E“ “F“ new OrderValue(4));
        new Ordered(“F“ “A“ new OrderValue(5));

        new Ordered(“A“ “C“ new OrderValue(6));
        new Ordered(“C“ “D“ new OrderValue(7));

        new Ordered(“A“ “D“ new OrderValue(2));
        new Ordered(“D“ “A“ new OrderValue(56));

        //new Ordered(“B““E“);
        //new Ordered(“D““F“);
        new Ordered(“E“ “B“ null);

        new Ordered(“C“ “G“ null);
        new Ordered(“E“ “H“ null);
        //把图状结构转化成路径数组和决策树,并把路径数组输出到控制台。
        GraphVertex A = GraphVertex.GraphNameMap.get(“A“);
        A.GraphToTree(A);
        //根据需要优化树的分支
        A.optimize( A.LeafList);
        //显示优化标记后的树型结构
        Jframe f = new Jframe(“图状数据结构(ABC)“);
        Container contentpane = f.getContentPane();
        JTree treeABC = new JTree((TreeNode) (A.TreeRoot));
        JScrollPane scrollpane = new JScrollPane();
        scrollpane.setViewportView(treeABC);
        contentpane.add(scrollpane);
        f.pack();
        f.setVisible(true);
        f.setBounds(300 30 600 600);
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
  }

//ChangeGraphtoTree.java      //本程序用NetBeans IDE 7.2 开发

//顶点对象
class GraphVertex {
    //1,图状数据结构定义
    //起点(弧起点)清单
    public ArrayList StartPointList = new ArrayList();
    //目标点(弧终点)清单
    public ArrayList EndPointList = new ArrayList();
    public GraphVertexValue GVV;//顶点的附加属性
    public static TreeMap GraphNameMap;//顶点键-值对集合
    private static ArrayList VertexStack;//当前节点数组堆栈
    //3,策略树相关变量
    public static UserTreeNode TreeRoot;//树的根节点
    public static ArrayList LeafList;//树的叶节点列表
    private static ArrayList TreeStack;//树的当前节点路径堆栈
    private static UserTreeNode aVertexNode;//树的当前节点
    private static int linkID;//用于对叶节点编号
    public static final boolean CONTINUE = true;
    public static final boolean BREAK = false;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         48  2013-06-03 20:46  java_pushone.bat

     文件         41  2013-06-03 20:38  javac_change.bat

     文件      14020  2013-06-03 20:45  ChangeGraphtoTree.java

----------- ---------  ---------- -----  ----

                14109                    3


评论

共有 条评论