zoukankan      html  css  js  c++  java
  • 设计树形结构

    设计树形结构,后面再研究下是否可行

    如果你的树深度是可预期的话,有个超简单的数据结构。你需要3个字段来表达这个树:

    1. id,本节点的primary key
    2. parent_id,其值为父节点的primary key
    3. key,忘了学名叫啥了,你可以称为线索
    4. level,表示当前节点到根节点的距离

    其中,key字段的值为:从跟节点到父节点的primary key,中间用任意非数字符号分割。

    例如以下树状结构

    ├── a
    │   ├── d
    │   │   ├── p
    │   │   ├── q
    │   │   └── r
    │   ├── e
    │   └── f
    ├── b
    │   ├── x
    │   ├── y
    │   └── z
    ├── c

    | id | value | parent_id | key   | level |                                
    | 1  | a     | 0         | "-"    | 1     |
    | 2  | b     | 0         | "-"    | 1     |
    | 3  | c     | 0         | "-"    | 2     |
    | 4  | d     | 1         | "1-"   | 2     |
    | 5  | e     | 1         | "1-"   | 2     |
    | 6  | f     | 1         | "1-"   | 2     |
    | 7  | x     | 2         | "2-"   | 2     |
    | 8  | y     | 2         | "2-"   | 2     |
    | 9  | z     | 2         | "2-"   | 2     |
    | 10 | p     | 4         | "1-4-" | 3     |
    | 11 | q     | 4         | "1-4-" | 3     |
    | 12 | r     | 4         | "1-4-" | 3     |

    于是,在给定一个节点d的时候,

    1. 查找d的所有子孙节点:select * from table_name where key like "${d.id}-${d.key}-%"
    2. 查找某个节点的所有子节点:select * from table_name where key like "${d.id}-${d.key}-%" and level=${d.level}+1

    有追求,才有动力!

    向每一个软件工程师致敬!

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    HDU 3695 Computer Virus on Planet Pandora
    codeforces 706D Vasiliy's Multiset
    HDU 2222 Keywords Search
    POJ 2348 Euclid's Game
    HDU 1079 Calendar Game
    js选项卡的实现方法
    实现鼠标悬浮切换标题和内容
    js实现鼠标悬浮切换 setTab 代码实现
    自学Node.js: WebStorm+Node.js开发环境的配置
    windows 下安装nodejs
  • 原文地址:https://www.cnblogs.com/wujf/p/6439588.html
Copyright © 2011-2022 走看看