一个遍历算法

class ProductDirModel extends Model {

    public function getProductDir($dirId){
        // $dirId = 591

    }

    public function f($dirId){

        $val=$this->test($dirId);
        $data[‘children‘]=$val;
        return $val;

        /* $productDirs = $this->f2($dirId);
        foreach ($productDirs as $productDir){
            $tempArray[‘children‘] = array(‘id‘=>$productDir[‘dir_id‘],‘text‘=>$productDir[‘dir_name‘]);
            f($productDir[dir_id]);
        }
        return $tempArray; */
    }

    public function test($dirId){
        $productDirs = $this->f2($dirId);

        $val=array();
        foreach($productDirs as $k){
            $v = array();
            $v[‘id‘] = $k[‘dir_id‘];
            $v[‘text‘] = $k[‘dir_name‘];
            $v[‘expanded‘] = true;
            $tempArray = $this->test($k[‘dir_id‘]);
            if(count($tempArray) != 0){
                $v[‘children‘] = $tempArray;
                $v[‘leaf‘] = false;
            }else{
                $v[‘leaf‘] = true;
            }
            $val[] = $v;

        }
        return $val;
    }

    public function f2($dirId){
        $map = array();
        $map[‘dir_parent_id‘] = $dirId;
        $returnInfo = $this->field(‘dir_id,dir_name‘)->where($map)->select();
        return $returnInfo;
    }
}   
时间: 2024-10-21 12:24:59

一个遍历算法的相关文章

morris算法-----高级二叉树遍历算法

在遍历儿叉树时,常常使用的是递归遍历,或者是借助于栈来迭代,在遍历过程中,每个节点仅访问一次,所以这样遍历的时间复杂度为O(n),空间复杂度为O(n),并且递归的算法易于理解和实现.在遍历过程中,递归遍历过程的空间复杂度却是O(n),就算是转换为使用栈空间迭代时间,还是没有改变算法对额外空间的需求,在学习数据结构课程时,还学习了线索二叉树,在线索二叉树中,使用线索来保存节点的前驱和后继的信息,而这些线索是利用了叶节点的空指针域来保存,所以知道了树种每个节点的前驱和后继的位置(指针)可以有效降低遍

二叉树遍历算法总结(递归与非递归)

一:前言 二叉树的遍历方法分四种:前序,中序,后序以及层次遍历. 其中,前中后遍历方法的实现分递归和非递归,非递归遍历的实现需要借助于栈. 实际上,递归的调用就是一种栈的实现,所以,非递归遍历就需要人工借助栈结构来实现. 而层次遍历需要借助队列. 二:前中后序遍历 递归遍历: 递归遍历的思想和方法很简单,通过调整输出语句来实现前,中,后三种遍历. 代码如下: 1 void show(BiTree T) 2 { 3 if(T) 4 { 5 printf("%c ",T->data)

链表创建和链表遍历算法的演示_C语言

今天搞了一个多小时,头是疼的,应该是没休息好吧,学习了数据结构这一节,感觉收益良多,下面贴上代码和心得: 1 /*24_链表创建和链表遍历算法的演示*/ 2 # include <stdio.h> 3 # include <malloc.h> 4 # include <stdlib.h> 5 6 typedef struct Node 7 { 8 int data;//数据域 9 struct Node * pNext;//指针域 10 }NODE, *PNODE;//

有向图的深度优先遍历算法的快速实现及应用

本文介绍使用java.util.*包中的HashMap 和 LinkedList 以及 ArrayList类快速实现一个有向图,并实现有向图的深度优先遍历算法. 如何构造图? 本文根据字符串数组来构造一个图.图的顶点标识用字符串来表示,如果某个字符串A的第一个字符与另一个字符串B的最后一个字符相同,则它们之间构造一条有向边<A,B>.比如,字符串数组{"hap","peg","pmg","god"}对应的有向图如下

二叉树遍历算法——包含递归前、中、后序和层次,非递归前、中、后序和层次遍历共八种

首先,要感谢网上的参考资料. http://mengliao.blog.51cto.com/876134/1178079(作者:BlackAlpha) http://blog.csdn.net/fzh1900/article/details/14056735(作者:_云淡风轻) http://blog.csdn.net/stpeace/article/details/8138458(作者:stpeace) 二叉树是使用的比较广泛的一种数据结构,这里我写了二叉树的相关操作,包括初始化.新建.以及遍

遍历算法(1)

遍历算法主要用在在处理迷宫问题,图,最短路径,以及枚举所有可能等问题上.下面我们通过一个简单的例子,来入门深度优先和广度优先算法: 1 package com.rampage.algorithm.base; 2 3 import java.util.ArrayList; 4 import java.util.LinkedHashSet; 5 import java.util.List; 6 import java.util.Set; 7 8 /** 9 * 相关的搜索算法实例 假设有1-9,9个

两点间所有路径的遍历算法

转自:http://blog.sina.com.cn/s/blog_5ff8e88e01013lot.html 这几天,用到了这个功能,但在网上找到了一份资料,思路写的很清晰,但代码有错误.因此,我就按着这个思路,自己整理了代码,现在说明如下:(引用前部分思想,更新后部分代码) 两点间所有路径的遍历算法 中国海洋大学 信息科学与工程学院 熊建设 梁磊 摘要:本文首先简单介绍图的深度优先遍历算法,接着根据图的深度优先遍历算法求出连通图中两点间所有路径,并给出代码. 关键词:图.深度优先遍历.算法

图和图的遍历算法

1.存储结构(邻接链表) 1.1每个顶点用VexNode类表示,每条边用ArcNode表示 1.2所有顶点用数组VexNode adjlist[]表示,所有邻接顶点用链表表示 2.遍历算法 2.1深度优先遍历DFS 用递归实现,从V0开始,访问V0即邻接顶点V1,访问V1及其邻接顶点... 2.2广度优先遍历 用队列实现,从V0开始,访问V0,入队,出队,访问V0所有临界点,入队...直到队列为空 Graph.java 1 package com.gxf.graph; 2 3 /** 4 * 定

二叉树的各种遍历算法-leetcode Binary Tree Postorder Traversal 扩展

二叉树的各种遍历方法有  前序遍历   中序遍历    后序遍历  层序遍历.其中前三种遍历有递归程序可以实现,但是我们也有必要掌握其非递归版本的算法实现.正好在leetcode中遇到了遍历二叉树的问题,今天在这里一并总结了. 首先,引用leetcode中关于二叉树节点的定义. 1 // Definition for binary tree 2 struct TreeNode { 3 int val; 4 TreeNode *left; 5 TreeNode *right; 6 TreeNode