使用深度優先遍歷比廣度優先遍歷效率要高

2021-04-07 05:30:45 字數 1054 閱讀 1447

問題描述

在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

asdeclare @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

深度優先遍歷 廣度優先遍歷

用棧進行儲存元素。訪問頂點 頂點入棧,以便記住它 標記頂點,以便不會再訪問它 2 訪問規則 a.如果可能,訪問乙個鄰接的未訪問頂點,標記它,併入棧。b.當不能執行a時 沒有鄰接的未訪問頂點 如果棧不為空,就從棧中彈出乙個頂點。c.如果不能執行規則a和b,就完成了整個搜尋過程。3 實現 基於以上規則,...

深度優先遍歷 和 廣度優先遍歷

圖的廣度優先搜尋是樹的按層次遍歷的推廣,它的基本思想是 首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點 vi1,vi2,vi t,並均標記已訪問過,然後再按照vi1,vi2,vi t的次序,訪問每乙個頂點的所有未被訪問過的鄰接點,並均標記為已訪問過,依次類推,直到圖中...

深度優先遍歷與廣度優先遍歷

深度優先遍歷 1 深度優先遍歷的遞迴定義 圖的深度優先遍歷類似於樹的前序遍歷。採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。這種搜尋方法稱為深度優先搜尋 depth first search 相應地,用此方法遍歷圖就很自然地稱之為圖的深度優先遍歷 2.基本實現思想 1 訪問頂點v 2 從v的未被...