`

多叉树 遍历

阅读更多

public class Category implements Serializable {

 

    private int categoryId;    
    private String categoryName;
    private String categoryComm;
    private int parId;

 

     }

public class CategoryNode {

     private Category category;
     private List<CategoryNode> childList=new ArrayList();

     public CategoryNode(){
          this.category=null;
     }
     public CategoryNode(Category category){
          this.category=category;
     }

public class CategoryTree {

 private CategoryNode root;
 
 public CategoryTree(){
  root=new CategoryNode();
 }
 public CategoryTree(Category category){
  root=new CategoryNode(category);
 }
 
 public static void main(String args[]){
  CategoryTree ct=createTree();
  String str=ct.iteratorTree(ct.getRoot());
  System.out.println(" "+str);
 }
 //0--name: 服务展示,1--name: 劳动就业,3--name: 招工信息,1--name: 少儿保险,1--name: 养老保险,0--name: 用户注册,0--name: 信息发布,5--name: 新闻中心,
 //终于显示出来了,三级类别可以显示,四级目录也可以显示在三级类别后面
 public static CategoryTree createTree(){
  List list=initList();
  CategoryTree ct=new CategoryTree();
  ct.getRoot().getChildList().add(0, new CategoryNode((Category)list.get(0)));
  ct.getRoot().getChildList().add(1, new CategoryNode((Category)list.get(1)));
  ct.getRoot().getChildList().add(2, new CategoryNode((Category)list.get(4)));
  
  ct.getRoot().getChildList().get(0).getChildList().add(0, new CategoryNode((Category)list.get(2)));
  ct.getRoot().getChildList().get(0).getChildList().add(1, new CategoryNode((Category)list.get(3)));
  ct.getRoot().getChildList().get(0).getChildList().add(2, new CategoryNode((Category)list.get(6)));
  
  ct.getRoot().getChildList().get(2).getChildList().add(0, new CategoryNode((Category)list.get(5)));
  
  ct.getRoot().getChildList().get(0).getChildList().get(0).getChildList().add(0, new CategoryNode((Category)list.get(7)));//三级类别
  ct.getRoot().getChildList().get(0).getChildList().get(0).getChildList().get(0).getChildList().add(0, new CategoryNode((Category)list.get(8)));
  return ct;
 }
 public CategoryNode getRoot() {
  return root;
 }
 public void setRoot(CategoryNode root) {
  this.root = root;
 }
 public static List initList(){
  List list=new ArrayList();
  Category c=new Category();
  c.setCategoryName("服务展示");
  c.setCategoryId(1);
  c.setParId(0);
  
  list.add(c);
  c=new Category();
  c.setCategoryId(2);
  c.setCategoryName("用户注册");
  c.setParId(0);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(3);
  c.setCategoryName("劳动就业"); //二级目录
  c.setParId(1);
  list.add(c);
  c=new Category();
  c.setCategoryId(4);
  c.setCategoryName("少儿保险");
  c.setParId(1);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(5);
  c.setCategoryName("信息发布");
  c.setParId(0);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(7);
  c.setCategoryName("新闻中心");
  c.setParId(5);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(8);
  c.setCategoryName("养老保险");
  c.setParId(1);
  list.add(c);
  c=new Category();
  c.setCategoryId(6);
  c.setCategoryName("招工信息");//三级目录
  c.setParId(3);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(9);
  c.setCategoryName("单位招聘");//四级目录
  c.setParId(6);
  list.add(c);
  
  return list;
 }
 public String iteratorTree(CategoryNode treeNode){  
       
        StringBuilder sb = new StringBuilder();  
          
        if (treeNode != null) {  
              
           /* if ("root".equals(treeNode.getCategory().get)) {  
                sb.append(treeNode.getData().getKey() + ",");  
            }  */
              
            for (CategoryNode index : treeNode.getChildList()) {  
                  
                sb.append(index.getCategory().getParId()+"--name: "+index.getCategory().getCategoryName() + ",");  
                  
                if (index.getChildList() != null && index.getChildList().size() > 0 ) {  
                      
                    sb.append(iteratorTree(index));  
                      
                }  
            }  
        }  
          
        return sb.toString();  
    }  
}

分享到:
评论
1 楼 wersion 2012-04-16  
    

相关推荐

    基于Python的多叉树遍历算法.zip

    本资料包"基于Python的多叉树遍历算法.zip"主要探讨如何在Python中实现多叉树的遍历算法。下面我们将详细讨论多叉树的概念、遍历方法以及如何用Python来实现这些算法。 一、多叉树的基本概念 多叉树是由节点和边...

    三叉树多叉树遍历

    三叉树多叉树遍历 c# 2.0

    多叉树的遍历,可以打印出树形结构,也可以只打印叶节点,或打印指定层的节点(一位德国教授写的)

    ### 多叉树遍历与结构解析 #### 概述 多叉树作为一种重要的数据结构,在计算机科学领域有着广泛的应用。本文将详细介绍一种基于C++实现的多叉树容器类`tree.hh`,该库由Kasper Peeters开发,并遵循GNU通用公共许可...

    java多叉树的实现和遍历输出

    本篇文章将深入探讨如何在Java中实现多叉树以及其遍历方法。 首先,我们需要定义一个多叉树节点类。这个类通常包含一个数据字段来存储节点值,以及一个ArrayList或LinkedList等动态数组来存储子节点。以下是一个...

    JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例

    本文实例讲述了JavaScript实现多叉树的递归遍历和非递归遍历算法操作。分享给大家供大家参考,具体如下: 演示之前的准备工作 演示项目的文件结构: index.html jsonData.js recurrenceTree.js noRecurrenceTree.js ...

    分层建立多叉树及分层遍历输出

    本文将深入探讨如何使用C++语言分层建立一个多叉树,并进行分层遍历输出。在此过程中,我们将特别关注在奇数节点位置插入偶数节点的策略,以满足特定的输出格式要求。 首先,我们需要理解多叉树的概念。与二叉树...

    多叉树的后序非递归遍历

    多叉树的建立以及后序非递归遍历,希望对学习数据结构的同学有所帮助,也对树一部分有更深的了解。

    多叉树的树形显示

    3. **遍历**:类似于二叉树,多叉树也可以进行前序、中序和后序遍历,但定义会稍微复杂些,因为子节点数量不固定。 4. **深度优先搜索(DFS)**和**广度优先搜索(BFS)**:这两种遍历方法同样适用于多叉树,DFS沿着...

    树状数据(多叉树)在数据库中存储的示例源码

    多叉树是树结构的一种变体,每个节点可以有多个子节点,区别于二叉树(每个节点最多两个子节点)。在数据库中存储树状数据时,我们需要考虑如何有效地表示和操作这种结构。本文将围绕"树状数据(多叉树)在数据库中...

    多叉树的设计、建立、层次优先遍历和深度优先遍历

    首先将根节点入队列,然后检测队列是否为空,如果不为空,将队列出队列,访问出队列的节点,然后将该节点的子节点指针入队列,依次循环下去,直至队列为空,终止循环,从而完成整个多叉树的层次优先遍历。

    基于顺序存储实现的多叉树容器

    1. 前序遍历:这是树遍历的一种常见方法,先访问根节点,然后遍历左子树,最后遍历右子树。在多叉树中,这个顺序变为访问根节点,然后遍历所有子节点。前序迭代器会按照这个顺序提供节点。 2. 后序遍历:后序遍历的...

    自己用C语言实现的拓扑多叉树

    3. **遍历多叉树**:实现深度优先搜索(DFS)或广度优先搜索(BFS)来访问树的所有节点。DFS可以使用递归或栈来实现,BFS则通常使用队列。 4. **查找节点**:根据给定的数据值查找特定的节点。 5. **删除节点**:...

    javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】

    4. 遍历多叉树:多叉树的遍历可以分为深度优先遍历(DF)和广度优先遍历(BF)。深度优先遍历是从根节点开始,尽可能沿着树的深度遍历节点,而广度优先遍历则是从根节点开始,逐层从左到右遍历节点。这两种遍历方法...

    多叉树的实现

    ### 多叉树的实现详解 #### 一、概述 多叉树是一种常见的数据结构,在计算机科学领域有广泛的应用场景,比如在机器学习中的决策树、数据库索引、文件系统等。多叉树与二叉树相比,节点可以拥有两个以上的子节点。...

    TreeNde 多叉树

    在"TreeNde 多叉树"这个主题中,我们将深入探讨如何动态生成多叉树、自动化遍历以及生成XML文本的实现方法。 首先,动态生成多叉树是指在程序运行时根据特定需求或数据构建树结构。这通常涉及到递归算法,因为树的...

    后序遍历多叉树.rar

    在C#中实现多叉树的后序遍历,首先需要定义一个树节点类,包含节点值和子节点列表。例如: ```csharp public class TreeNode { public int Value { get; set; } public List&lt;TreeNode&gt; Children { get; set; } ...

    多叉树构造器

    可以用来构造不同类型的树,并显示出来,可按非递归的方法进行遍历,遍历分两种方法,广度优先搜索和深度优先搜索。代码中有详细说明。在readme.txt有一些相关介绍。 程序在vc6,vs2005环境下编译通过。

    家谱图-多叉树-c语言-数据结构

    这两种方法都有前序、中序和后序遍历,但对多叉树来说,这些术语的含义可能有所不同,因为没有固定的“左”和“右”。 4. **查找和删除节点**:实现查找特定人员的功能,以及删除某个节点的功能。查找可能涉及DFS或...

    课程设计多叉树图书管理

    层次遍历是多叉树操作中常用的方法,通常包括前序遍历、中序遍历和后序遍历。在图书管理系统中,前序遍历可能先访问书名,然后是作者和出版信息;中序遍历可能按照某种特定的排序规则进行;后序遍历可能用于处理子...

Global site tag (gtag.js) - Google Analytics