树形结构 查找上下级

现有树形结构如下    若给出cat_id 9  如何查处 9 的所有上级  和  所有下级

<?php
 array (
	1 =>array (
          ‘cat_id‘ => ‘1‘,
          ‘cat_name‘ => ‘手机类型‘,
          ‘parent_id‘ => ‘0‘,
          ‘child‘ =>array (
            2 => array (
              ‘cat_id‘ => ‘2‘,
              ‘cat_name‘ => ‘CDMA手机‘,
              ‘parent_id‘ => ‘1‘,
            ),
            3 => array (
              ‘cat_id‘ => ‘3‘,
              ‘cat_name‘ => ‘GSM手机‘,
              ‘parent_id‘ => ‘1‘,
            ),
            4 => array (
              ‘cat_id‘ => ‘4‘,
              ‘cat_name‘ => ‘3G手机‘,
              ‘parent_id‘ => ‘1‘,
            ),
            5 => array (
              ‘cat_id‘ => ‘5‘,
              ‘cat_name‘ => ‘双模手机‘,
              ‘parent_id‘ => ‘1‘,
            ),
          ),
        ),
  6 => array (
          ‘cat_id‘ => ‘6‘,
          ‘cat_name‘ => ‘手机配件‘,
          ‘parent_id‘ => ‘0‘,
          ‘child‘ => array (
            7 => array (
				  ‘cat_id‘ => ‘7‘,
				  ‘cat_name‘ => ‘充电器‘,
				  ‘parent_id‘ => ‘6‘,
				),
            8 => array (
				  ‘cat_id‘ => ‘8‘,
				  ‘cat_name‘ => ‘耳机‘,
				  ‘parent_id‘ => ‘6‘,
				),
            9 => array (
              ‘cat_id‘ => ‘9‘,
              ‘cat_name‘ => ‘电池‘,
              ‘parent_id‘ => ‘6‘,
                 ‘child‘ => array(
					101=>array (
						  ‘cat_id‘ => ‘101‘,
						  ‘cat_name‘ => ‘充电器101‘,
						  ‘parent_id‘ => ‘9‘,
						),
					102=>array (
						  ‘cat_id‘ => ‘102‘,
						  ‘cat_name‘ => ‘充电器102‘,
						  ‘parent_id‘ => ‘9‘,
						),
					103=>array (
						  ‘cat_id‘ => ‘103‘,
						  ‘cat_name‘ => ‘充电器103‘,
						  ‘parent_id‘ => ‘9‘,
					),
				 ),
            ),
            11 => array (
              ‘cat_id‘ => ‘11‘,
              ‘cat_name‘ => ‘读卡器和内存卡‘,
              ‘parent_id‘ => ‘6‘,
            ),
          ),
        ),
  12 => array (
    ‘cat_id‘ => ‘12‘,
    ‘cat_name‘ => ‘充值卡‘,
    ‘parent_id‘ => ‘0‘,
    ‘child‘ =>  array (
		  13 => array (
				‘cat_id‘ => ‘13‘,
				‘cat_name‘ => ‘小灵通/固话充值卡‘,
				‘parent_id‘ => ‘12‘,
		  ),
		  14 => array (
				‘cat_id‘ => ‘14‘,
				‘cat_name‘ => ‘移动手机充值卡‘,
				‘parent_id‘ => ‘12‘,
		  ),
		  15 => array (
				‘cat_id‘ => ‘15‘,
				‘cat_name‘ => ‘联通手机充值卡‘,
				‘parent_id‘ => ‘12‘,
		  ),
    ),
  ),
);
时间: 2024-07-29 07:53:25

树形结构 查找上下级的相关文章

Django中使用Bootstrap展示树形结构

概述 在企业管理系统中,经常会有树形结构需求,例如:组织结构.权限等等,本文使用Django和Bootstrap Tree View来展示企业组织结构和对应组织的人员. 实现 模型类(models.py) class Department(models.Model): name = models.CharField(u'单位名称', max_length=30) pri = models.IntegerField(u'序号') desc = models.CharField(u'备注', max

sqlite3树形结构遍历效率对照測试

sqlite3树形结构遍历效率对照測试 一.缘起 项目数据结构:本人从事安防行业,视频监控领域.项目中会遇到监控点位的组织机构划分.暂时划分的巡逻点位等.这些相机点位.连同组织机构,它们在逻辑关系上构成了一个树形结构. 又因为不论什么一个点位属于一个组织机构,也可能属于一个被暂时创建的视频巡逻计划中,因此,能够看出,不论什么一个节点,包含相机节点和组织机构节点,都有可能有至少一个父级节点,且不论什么一个组织机构节点也会有多个下级子节点.这中逻辑关系又构成了图. 数据量规模:一个市级别的管理平台,

树形结构的数据库的存储

程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门.栏目结构.商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化.理想中树形结构应该具备如下特征:数据存储冗余度小.直观性强:检索遍历过程简单高效:节点增删改查CRUD操作高效. 列举了一个食品族谱的例子进行讲解,通过类别.颜色和品种组织食品,树形结构图如下: 1,对树形结构最直观的分析莫过于节点之间的继承关系上,通过显示地描述某一节点的父节点,从而能够建立二维的关系表,则这种方案的Tree表结构通常设计为:{

java工程积累——树形结构的操作

最近一直被树形结构整的很头大,又是递归,又是循环,但是,好在我们在经历了千辛万苦后,终于弄出来了,其实就是组织机构的常规操作,有些是我们过度设计,有些是我们想错了,而对数的逻辑读取,我们就属于想错了的类型,今天拿出来和大家分享,主要是树形结构在数据库的读取问题! 原始: 在最开始,我们对树的查询,肯定是从最简单的select开始,我们现在回顾一下: 定义: 表名:tb_tree 字段:id(主键),title(标题),parentId(父节点id) 举例: 1.查找树中的所有顶级父节点(辈份最长

通用列表数据转化为树形结构

近期做项目用的是JQuery  easyUI 控件, 尽管非常强大,可是高级控件对于数据的格式要求比較严格遇到 例如以下问题 1.使用comboTree 控件   绑定树形的组织结构   可是 数据库查到的数据格式是 列表形式,并不符合  combotree的数据结构 以下是我的数据和  combotree 数据个对照 通用的数据结构   命名A "[{"UnitID":"7cf57594a7074c46b94dcd6c985b0ced","Un

java 树形结构工具类

   好久就想写博客了,苦苦因为没时间...没关系.从现在开始,每天我都会努力抽出点时间来进行做一次总结.把我认为在项目需求中认为很有用的东西,展示给大家,希望大家一起学习,一起进步.第一次做总结,写的不好的,提出来一起学习,谢谢.    分析:   在业务需求总,我们总会碰到一些业务.比如:对上下级的用户关系进行遍历,对资源权限进行遍历...等等.这些业务非常常见.在同一个项目中,他的代码遍历都是类似的,为了更高效的复用代码,我们有必要进行深成次的封转.下面是我花了一点时间进行封装,有需要直接

YbSoftwareFactory 代码生成插件【十八】:树形结构下的查询排序的数据库设计

树形结构的排序在中国特色下十分普遍也非常重要,例如常说的五大班子,党委>人大>政府>政协>纪委,每个班子下还有部门,岗位,人员,最终排列的顺序通常需要按权力大小.重要性等进行排列,顺序排列不好可是重大的罪过,领导很生气,后果很严重.这种排序方式本质上就是典型的树形结构深度排序,但在数据库中很难直接通过SQL语句简单高效地进行处理,更不用说还要支持不同类型数据库了. 当前解决此类问题,主要有两种方法. 1. 排序码方式 原理:在每个树形节点上均设置一个排序码,排序码通常是一个字符串并

java 把DataTable数据类型转换为树形结构(多叉树)

问题分析:一个关系数据库的表,如图所示: 可以看到后面四个字段:Country,Province,City,Street 具有逻辑上的从属结构,现在要把这种数据搞成一个树形结构,如图所示: 不是原来的数据转换而成的,大致就是这个意思,可以想象成,dataTable里面相同的数据进行单元格合并,然后找到所有的从根到叶子节点的路径,就算完成任务.JS里面似乎有很多插件可以实现,但Java中我暂时还没找到,没办法只能自己写了.从结构上看,应该是一个多叉多级树形结构,所以在转换的时候必须具备一定的灵活性

Atitit 常见的树形结构 红黑树 &#160;二叉树 &#160;&#160;B树 B+树 &#160;Trie树&#160;attilax理解与总结

Atitit 常见的树形结构 红黑树  二叉树   B树 B+树  Trie树 attilax理解与总结 1.1. 树形结构-- 一对多的关系1 1.2. 树的相关术语: 1 1.3. 常见的树形结构 红黑树  二叉树   B树 B+树  Trie树2 1.4. 满二叉树和完全二叉树..完全二叉树说明深度达到完全了.2 1.5. 属的逻辑表示 树形比奥死,括号表示,文氏图,凹镜法表示3 1.6. 二叉树是数据结构中一种重要的数据结构,也是树表家族最为基础的结构.3 1.6.1. 3.2 平衡二叉