使用深度优先遍历比广度优先遍历效率要高

原创 2006年05月17日 13:24:00

问题描述

在Folder_Info表中重置Folder_Level,假设第一级的level是正确的,并且设第一级节点的parent-pkid为0,其他所有节点的级别由该节点的父节点决定.

而其他级别的节点的level可能错误,请校正所有节点的level.例如

Table Schema

CREATE TABLE [dbo].[FOLDER_INFO] (
 [PK_ID] [int] IDENTITY (1, 1) NOT NULL ,
 [PARENT_PKID] [int] NULL ,
 [FOLDER_LEVEL] [int] NULL ,
 [FOLDER_NAME] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [FOLDER_DESC] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,哦
) ON [PRIMARY]

解决方案

可以采用下面的一个存储过程来进行校正,采用广度优先遍历

Create Procedure CorrectFolderLevel
as
declare @FolderLevel int
set @FolderLevel =1
update Folder_Info set Folder_Level=@FolderLevel where Parent_PkId=0
update Folder_Info set Folder_Level=-1 where Parent_PkId!=0
while @FolderLevel<100
begin
update Folder_Info Set Folder_Level=@FolderLevel+1 where Parent_PkId in (Select Pk_Id from Folder_Info where Folder_Level=@FolderLevel)
if @@rowcount=0 break
set @FolderLevel = @FolderLevel+1
end

HashMap的keySet遍历和entrySet遍历时间效率比较

HashMap的keySet遍历和entrySet遍历时间效率比较
  • u011402596
  • u011402596
  • 2014年08月14日 17:26
  • 887

关于邻接表和其深度优先遍历、广度优先遍历的问题

如果有一个邻接表存储的图,以
  • u012989088
  • u012989088
  • 2014年09月09日 10:16
  • 6355

深度优先遍历和广度优先遍历思考

原地址 在说两种算法之前先说说什么叫“搜索”: 可能很多人对搜索的想法有点不对,很多人认为搜索是对已知的一棵树或者是已知的图进行搜索,所以我们常常把搜索和遍历给搞混了,但是其实搜索针对...
  • sweetgum2012
  • sweetgum2012
  • 2015年07月03日 11:38
  • 1785

二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)

二叉树的深度优先遍历(DFS)与广度优先遍历(BFS) 深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止。然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节...
  • mingwanganyu
  • mingwanganyu
  • 2017年05月14日 17:45
  • 576

邻接矩阵的深度优先遍历(递归以及非递归),广度优先遍历

#include #include #define MAX_VERTEX_NUM 20 typedef int AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]...
  • i1020
  • i1020
  • 2016年11月13日 17:24
  • 1552

图 深度优先遍历 广度优先遍历 非递归遍历 图解算法过程

图 深度优先遍历 广度优先遍历 图解算法过程
  • collonn
  • collonn
  • 2014年01月06日 18:12
  • 15073

图的创建以及深度与广度优先遍历C/C++

一、图的存储结构 图有几种最常见的存储结构:邻接矩阵、邻接表和十字链表。 下面仅以邻接表表示法进行图的操作 邻接表: 邻接表(Adjacency List)是一种顺序存储结构与链式存储相结合的...
  • g15827636417
  • g15827636417
  • 2016年11月05日 20:25
  • 3574

数据结构之图的深度优先遍历和广度优先遍历

1.图的简单介绍 上图就是一个图(无线图),由顶点和连线组成 图可以分为无向图和有向图(这个又有出度、入度的概念)、网,一般来说图有两种常用的表示方式,邻接矩阵(用二维数组的形式表示)和邻接表(主要...
  • sinat_30186009
  • sinat_30186009
  • 2016年07月23日 10:21
  • 1834

数据结构:图的遍历--深度优先、广度优先

图的遍历是指从图中的某一顶点出发,按照一定的策略访问图中的每一个顶点。当然,每个顶点有且只能被访问一次。 在图的遍历中,深度优先和广度优先是最常使用的两种遍历方式。这两种遍历方式对无向图和有向图都是适...
  • zhangxiangDavaid
  • zhangxiangDavaid
  • 2014年08月02日 11:20
  • 36147

图的邻接矩阵表示、广度优先遍历和深度优先遍历

如上如的所示,对图节点进行编号,每个节点又有相应的编号和值。因此图可以有一个二阶矩阵来记录各个节点的联通关系,由一个数组来记录各个节点的内容。图的广度优先遍历和深度优先遍历。 输出如下: ...
  • u014698348
  • u014698348
  • 2017年01月18日 18:35
  • 923
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用深度优先遍历比广度优先遍历效率要高
举报原因:
原因补充:

(最多只允许输入30个字)