递归 输出节点树 高手来看看

就一张数据表,还没有等级字段,怎么输出下面那个样子啊... 就一张数据表,还没有等级字段,怎么输出下面那个样子啊 展开
 我来答
jACKy劉
2013-08-28 · TA获得超过325个赞
知道小有建树答主
回答量:240
采纳率:100%
帮助的人:245万
展开全部

不用搜索, 直接排序插入即可. 此处列出基本思路, 代码您自己实现, 应该没难度的.

  1. 从数据库查询记录, 并按 pNid 正序排列;

  2. 在内存中, 构造出 tree 结构; 这个php 循环一趟即可.  譬如

$rootNode=array();
for ($i=0;$i<$count;$i++) {
    $node=array("pid"=>$pid, "nPid"=>$nPid,...,....); //构造节点
    $node["children"] = array(); // 子节点
    $parent = searchParent($rootNode, $nPid);
    $parent["children"][] = $node; // 连接到父节点;
}
funciton searchParent($root, $nPid) {
   global $rootNode;
    // 递归查找父节点.
    if ($root["pid"] == $nPid) {
       return $root;
   }else{
      if (isset($root["children"]) {
       for ($child as $root["children"]) {
          if ($child["pid"]==$nPid) {
              return $child
       }
    }
   return $rootNode;
}
3. 递归构造树, 这个应该简单一些了.

这个算法没优化, 你先暂时实现后再考虑优化.
更多追问追答
追问
没看懂 能用表里的 nid name pNid写下程序么 帅哥
追答
x, 晚上回家我帮你直接实现, 多大事啊. 下班先.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式