`
seadog
  • 浏览: 17475 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

一个简单的树的问题

阅读更多

表设计如下:

tree:表名

id:编号

name:节点描述

pid:父编号

nodelevel:节点级别

level:节点层数

isNode:是否有节点

id name pid nodelevel level isNode
1 test1 0 AAA 1 1
2 test2 1 AAAAAA 2 1
3 test3 1 AAAAAB 2 0
4 test4 2 AAAAAAAAA 3 1
5 test5 4 AAAAAAAAAAAA 4 0

 

我通过select * from tree order by nodelevel 得到一棵树

我如何遍历 这个查询结果

得到如下信息


 这样的一个结果信息

 

test1

  1. test2
    1. test4
      1. test5
  2. test3
分享到:
评论
6 楼 xieye 2007-05-09  
http://www.iteye.com/topic/77760
5 楼 seadog 2007-04-05  
谢谢楼上的
4 楼 divsun 2007-04-04  
看了半天我也没看明白楼主要问什么?
用ruby里
一般来说id,parent_id,name就可以实现一个树了,如果为了增加效率可以增加计数器缓存字段,isNode字段是没有必要的,children.size能取到.
我想楼主加这么多字段是为了增加效率和读取的简便性,这本无可厚非,但在维护这个树的时候也很难去维护这些字段的数据关联完整性.

一般遍历一个树可以用递归和非递归的方法,这个算法是比较基本的,可以自己去参考一下有关资料.





3 楼 seadog 2007-04-04  
你的回答是可以实现我要的东西

但是你回答的东西不对 请看清楚题名
2 楼 dennis_zane 2007-04-04  
如果使用ActiveRecord,可以使用act_as_tree插件
1 楼 dennis_zane 2007-04-04  
递归查询,根据你的数据库类型,请自行google递归查询的SQL

相关推荐

    子集树问题c++试设计一个用回溯法搜索子集空间树的函数。

    ### 子集树问题与回溯法在装载问题中的应用 #### 一、问题背景及定义 本篇文章探讨了一个特定的计算机科学问题——装载问题,它属于组合优化领域的一个经典案例。装载问题的具体表述是:假设有一艘最大载重量为 \...

    子集树问题 试设计一个用回溯法搜索子集空间树的函数。该函数的参数包括结点可行性判定函数和上界函数等必要的函数,并将此函数用于解装载问题。

    根据给定文件的信息,本文将围绕“子集树问题”展开讨论,重点在于设计一个采用回溯法搜索子集空间树的函数,并将其应用于解决装载问题。首先,我们需要明确几个核心概念: ### 回溯法简介 回溯法是一种通过尝试...

    一个简单的树形结构源代码

    在这个主题中,我们将深入探讨一个使用JavaScript实现的简单树形结构源代码。 首先,我们需要理解树的基本概念。一棵树由节点(也称为顶点)和边组成,每个节点可以有零个或多个子节点,除了根节点,其他节点都有且...

    五年级数学上册 第七单元 植树问题 第2课时 植树问题(2)导学案(无答案) 新人教版 学案.doc

    植树问题是小学数学中的一个重要概念,主要探讨在一条线上如何均匀地种植树木,同时考虑两端是否种植的问题。本导学案聚焦于五年级数学第七单元的植树问题,特别是"两端都不种"和"只种一端"的情况。 1. **植树问题...

    树塔问题求解

    树塔问题,也被称为汉诺塔(Hanoi Tower)问题,是计算机科学中一个经典的递归算法问题。它源于古印度的一个传说,涉及到在不违反特定规则的情况下将一堆圆盘从一根柱子移动到另一根柱子。这个问题有助于理解递归的...

    一个基于VC++的简单分形树

    在本项目中,我们使用Visual C++(VC++)编程环境,结合Microsoft Foundation Classes(MFC)库,来实现一个简单的分形树生成器。这个程序利用递归算法来构建具有分形特性的树形结构。 首先,我们要理解分形的基本...

    线段树的一种实现

    它的核心思想是将一个一维数组通过分治策略转化为一棵二叉树,每个节点代表一个区间的值,这棵树通常具有平衡性质,比如平衡二叉搜索树的特性。线段树在处理区间最值、区间加减等操作时效率极高,且空间复杂度相对较...

    运输问题的最小生成树解法

    最小生成树解法是一种直观且易于掌握的算法,它的核心思想是将运输问题映射为一个图论问题,进而利用图论中的最小生成树的概念来找到运输问题的基本可行解。这个方法的优势在于提供了一种更加形象和简单的求解过程。...

    求解最小生成树问题的论文

    最小生成树是图论中的一个核心概念,主要应用于网络设计、资源分配等领域,它寻找一个树形子图,连接图中的所有顶点,并且使得这个子图的所有边的权重之和最小。这个问题在计算机科学中有着广泛的应用,比如在设计...

    漆子超《分治算法在树的路径问题中的应用》1

    分治算法在树的路径问题中的应用是一个重要的计算几何和算法设计策略,尤其在信息学竞赛中,树的路径问题是常见的挑战之一。本文将深入探讨如何利用分治思想来解决这类问题。 首先,我们需要理解树作为一种数据结构...

    圣诞树源码,简单的实现圣诞树代码

    本文将深入探讨一个特别的编程项目——“圣诞树源码”,这是一个简单的实现,旨在帮助学习者更好地理解Windows打印和for循环的运用。通过分析这个项目,我们可以学到很多关于控制台输出、循环结构以及基础编程技巧的...

    tree_python_分形树叶_分形树_

    turtle是Python内置的一个图形库,它提供了一个简单的接口,用于在窗口上绘制图形。用户可以通过控制一个虚拟的“海龟”在屏幕上移动并绘制线条,就像小时候玩的纸笔游戏一样。turtle模块的基本操作包括前进、后退、...

    二叉树c++算法,二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。

    从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作: (1)访问结点本身(N), (2)遍历该结点的左子树(L), (3)遍历该...

    nodejs做的一个树形菜单框架和数据库文件

    在这个特定的项目中,"nodejs做的一个树形菜单框架和数据库文件"是一个利用Node.js构建的系统,它实现了树形菜单结构,这种结构常用于Web应用程序的左侧导航栏,以组织和展示多级的菜单项。用户可以通过点击这些菜单...

    轻松搞定面试中的红黑树问题

    ### 轻松搞定面试中的红黑树问题 在IT面试中,红黑树是一个常见的考点,特别是对于那些期望进入高水平技术岗位的求职者来说。本文将深入探讨红黑树的相关概念及其应用场景,帮助读者更好地理解和掌握这一重要的数据...

    java简单开发部门树(Tree)

    在Java开发中,构建部门树(Tree)是一个常见的需求,特别是在企业级应用中,用于展示组织结构或权限管理。这个项目提供了从JSP前端到Java后端的完整解决方案,非常适合初学者理解和学习,也能帮助有经验的开发者...

    一个简单的ID3决策树算法实现

    - **信息熵**是衡量数据纯度的指标,用于描述一个集合的不确定性。在决策树中,信息熵越小,表示类别分布越集中,决策树的节点就越纯净。 - **信息增益**是选择最佳特征的标准,它计算了在选择某一特征后,数据集...

    红黑树简单实现

    在本项目中,我们将探讨如何实现一个简单的红黑树,包括普通树的构建、查询功能以及红黑树的特殊性质和操作。 首先,我们需要理解二叉树的基本概念。二叉树是一种特殊的树结构,每个节点最多有两个子节点,通常分为...

    一个红黑树实现c源码

    总的来说,红黑树的C语言实现是一个复杂的过程,涉及到节点的创建、颜色管理、旋转操作以及插入和删除的复杂逻辑。理解并实现这样的数据结构对于学习高级数据结构和算法,以及深入理解计算机科学中的效率问题具有...

Global site tag (gtag.js) - Google Analytics