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()就可以打印出来了。


原创粉丝点击