PHP 数据库树的遍历方法
<?php
session_start();
define ('P_S', PATH_SEPARATOR);
define ('ROOT', "./");
set_include_path(ROOT .P_S .'Zend' .P_S .ROOT.get_include_path());
//加载ZEND 框架
require_once ROOT.'Zend/Loader.php';
require_once 'usercheck.php';//加载访问权限
Zend_Loader::loadFile('function.class.php', $dirs='class/', $once=false);//加载函数
Zend_Loader::loadClass('Zend_Db');//加载数据库类
Zend_Loader::loadClass('Zend_Config_Ini');//加载配置类
$config = new Zend_Config_Ini('config.php', 'general');//创建配置对象
$db = Zend_Db::factory($config->db->adapter,$config->db->config->toArray());//创建数据库对象
$select=$db->select();
$select->from('ResClass',array('lsh','name'));
$select->where('steps = 1');
$rs=$db->fetchAll($select);
foreach ($rs as $res){
echo ' '.$res['lsh'].$res['name']."<br>";
Visit($res['lsh'],1);
}
function Visit($nodeid,$stept){
global $db;
$recordset = "SELECT lsh,name FROM ResClass WHERE parent=".$nodeid; //搜索nodeid的所有下层节点
$rs=$db->fetchAll($recordset);
foreach($rs as $rss){
if(!$rss)
return; //已经是叶子节点,直接返回
else{
for ($i=0;$i<4*$stept;$i++){
echo " ";
}
echo ' '.$rss['lsh'].$rss['name']."<br>";
Visit($rss['lsh'],$stept+1);
}
}
}
?>
相关推荐
-
php遍历树的常用方法汇总
本文实例讲述了php遍历树的常用方法.分享给大家供大家参考.具体如下: 一.递归的深度优先的算法: <?php define('DS', DIRECTORY_SEPARATOR); function rec_list_files($from = '.') { if(!is_dir($from)) { return array(); } $files = array(); if($dh = opendir($from)) { while(false !== ($file = readdir($dh
-
PHP Class&Object -- 解析PHP实现二叉树
二叉树及其变体是数据结构家族里的重要组成部分.最为链表的一种变体,二叉树最适合处理需要一特定次序快速组织和检索的数据. 复制代码 代码如下: <?php// Define a class to implement a binary treeclass Binary_Tree_Node { // Define the variable to hold our data: public $data; // And a variable to hold the left and ri
-
php通过前序遍历树实现无需递归的无限极分类
本文实例讲述了php通过前序遍历树实现无需递归的无限极分类.分享给大家供大家参考.具体如下: 大家通常都是使用递归实现无限极分类都知道递归效率很低,下面介绍一种改进的前序遍历树算法,不适用递归实现无限极分类,在大数据量实现树状层级结构的时候效率更高. sql代码如下: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `lft` i
-
PHP Class&Object -- PHP 自排序二叉树的深入解析
在节点之间再应用一些排序逻辑,二叉树就能提供出色的组织方式.对于每个节点,都让满足所有特定条件的元素都位于左节点及其子节点.在插入新元素时,我们需要从树的第一个节 点(根节点)开始,判断它属于哪一侧的节点,然后沿着这一侧找到恰当的位置,类似地,在读取数据时,只需要使用按序遍历方法来遍历二叉树. 复制代码 代码如下: <?phpob_start();// Here we need to include the binary tree classClass Binary_Tree_Node() {
-
php FLEA中二叉树数组的遍历输出
但是要怎样遍历这个方法产生的二叉树数组呢?以下是我的做法: 复制代码 代码如下: <?php function preTree($cat){ foreach ($cat as $c){ ?> <p><a href="http://<?=$c['poper_site']?>"><?=$c['poper']?></a>:<?=t($c['content'])?></p> <?php if(
-
PHP实现二叉树的深度优先与广度优先遍历方法
本文实例讲述了PHP实现二叉树的深度优先与广度优先遍历方法.分享给大家供大家参考.具体如下: #二叉树的广度优先遍历 #使用一个队列实现 class Node { public $data = null; public $left = null; public $right = null; } #@param $btree 二叉树根节点 function breadth_first_traverse($btree) { $traverse_data = array(); $queue = arr
-
PHP 数据库树的遍历方法
代码如下: 复制代码 代码如下: <?php session_start(); define ('P_S', PATH_SEPARATOR); define ('ROOT', "./"); set_include_path(ROOT .P_S .'Zend' .P_S .ROOT.get_include_path()); //加载ZEND 框架 require_once ROOT.'Zend/Loader.php'; require_once 'usercheck.php';//
-
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
本文实例讲述了JavaScript实现的DOM树遍历方法.分享给大家供大家参考,具体如下: 二叉 DOM 树的遍历 function Tree() { var Node = function(key){ this.key = key; this.left = null; this.right = null; } root =null; } 前序遍历 首先访问根结点,然后遍历左子树,最后遍历右子树 Tree.prototype.preOrderTraverse = function(callbac
-
PHP读取目录树的实现方法分析
本文实例讲述了PHP读取目录树的实现方法.分享给大家供大家参考,具体如下: 前一阵时间面试XX公司笔试题中竟然有这样一道题: 使用PHP列出目录树! 当时一看就懵逼了!基本的思路还是有的,不过是使用递归算法,但对PHP操作目录文件的方法却不是很了解,所以今天好好补习一下! 解题思路: 1. 列出目录中的文件. 2. 判断是否是目录,如果是目录就继续递归. 3. 将所有文件名,存入多维数组 <?php function recurDir($pathName) { //将结果保存在result变量中
-
JavaScript实现二叉树的先序、中序及后序遍历方法详解
本文实例讲述了JavaScript实现二叉树的先序.中序及后序遍历方法.分享给大家供大家参考,具体如下: 之前学数据结构的时候,学了二叉树的先序.中序.后序遍历的方法,并用C语言实现了,下文是用js实现二叉树的3种遍历,并以动画的形式展现出遍历的过程. 整个遍历过程还是采用递归的思想,原理很粗暴也很简单 先序遍历的函数: function preOrder(node){ if(!(node==null)){ divList.push(node); preOrder(node.firstEleme
-
JavaScript实现树的遍历算法示例【广度优先与深度优先】
本文实例讲述了JavaScript实现树的遍历算法.分享给大家供大家参考,具体如下: <script type="text/javascript"> var t = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]; //下面这段深度优先搜索方法出自Aimingoo的[JavaScript语言精髓与编程实践] var deepView = function(aTree,iNode) { (iNode in aTree)
-
C++基于递归算法解决汉诺塔问题与树的遍历功能示例
本文实例讲述了C++基于递归算法解决汉诺塔问题与树的遍历功能.分享给大家供大家参考,具体如下: 递归是把问题转化为规模缩小的同类问题,然后迭代调用函数(或过程)求得问题的解.递归函数就是直接或间接调用自身的函数. 递归两要素:递归关系和递归边界(终止条件),递归关系确定了迭代的层次结构,需要深入了解并分解问题:终止条件保证了程序的有穷性. 递归的应用有很多,常见的包括:阶乘运算.斐波那契数列.汉诺塔.数的遍历,还有大名鼎鼎的快排等等.理论上,递归问题都可以由多层循环来实现.递归的每次调用都会消耗
-
Python编程实现二叉树及七种遍历方法详解
本文实例讲述了Python实现二叉树及遍历方法.分享给大家供大家参考,具体如下: 介绍: 树是数据结构中非常重要的一种,主要的用途是用来提高查找效率,对于要重复查找的情况效果更佳,如二叉排序树.FP-树.另外可以用来提高编码效率,如哈弗曼树. 代码: 用Python实现树的构造和几种遍历算法,虽然不难,不过还是把代码作了一下整理总结.实现功能: ① 树的构造 ② 递归实现先序遍历.中序遍历.后序遍历 ③ 堆栈实现先序遍历.中序遍历.后序遍历 ④ 队列实现层次遍历 #coding=utf-8 cl
-
JS实现二叉查找树的建立以及一些遍历方法实现
二叉查找树是由节点和边组成的. 我们可以定义一个节点类Node,里面存放节点的数据,及左右子节点,再定义一个用来显示数据的方法: //以下定义一个节点类 function Node(data,left,right){ // 节点的键值 this.data = data; // 左节点 this.left = left; // 右节点 this.right = left; // 显示该节点的键值 this.show = show; } // 实现show方法 function show(){ re
-
PHP实现的线索二叉树及二叉树遍历方法详解
本文实例讲述了PHP实现的线索二叉树及二叉树遍历方法.分享给大家供大家参考,具体如下: <?php require 'biTree.php'; $str = 'ko#be8#tr####acy#####'; $tree = new BiTree($str); $tree->createThreadTree(); echo $tree->threadList() . "\n";从第一个结点开始遍历线索二叉树 echo $tree->threadListReserv
-
Python解析树及树的遍历
解析树 完成树的实现之后,现在我们来看一个例子,告诉你怎么样利用树去解决一些实际问题.在这个章节,我们来研究解析树.解析树常常用于真实世界的结构表示,例如句子或数学表达式. 图 1:一个简单句的解析树 图 1 显示了一个简单句的层级结构.将一个句子表示为一个树,能使我们通过利用子树来处理句子中的每个独立的结构. 图 2: ((7+3)*(5−2)) 的解析树 如图 2 所示,我们能将一个类似于 ((7+3)*(5−2)) 的数学表达式表示出一个解析树.我们已经研究过全括号表达式,那么我们怎样理解
随机推荐
- shell脚本报错:"[: =: unary operator expected"解决办法
- MySQL查询优化:连接查询排序浅谈
- javascript基本语法
- 设备管理器经典技巧三则
- iOS利用AFNetworking实现文件上传的示例代码
- document.getElementById介绍
- 解析thinkphp基本配置 convention.php
- 火车采集器 免费版使出收费版本功能实现原理
- 利用iscroll4实现轮播图效果实例代码
- Go语言实现的排列组合问题实例(n个数中取m个)
- JavaScript实现弹窗效果代码分析
- Ruby的基础语法入门学习教程
- Python isinstance函数介绍
- 解析javascript 实用函数的使用详解
- windows 7架设OpenSSH服务器实践
- C# WinForm快捷键设置技巧
- android开发设计模式之——单例模式详解
- 嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws)
- 微信小程序下拉框功能的实例代码
- 微信小程序搭建自己的Https服务器