PB樹型結構遍歷

樹型結構的遍歷通常使用遞歸程序來實現,所以本節給出一個按照內容查找,對樹型結構進行遍歷,如果和要查找的內容相等,則返回該節點的Handle。函數如下:
/*-----------------------------------------------------------------------------
* 函數名稱:long wf_reader(long al_handle,string as_target)
* 函數作用:遍歷樹型結構,找到指定內容的節點。
* 返 回 值:節點的Handle。
* 算法描述:遍歷樹型結構,使用遞歸完成。
*----------------------------------------------------------------------------*/
long ll_handle
long ll_handleOld
TreeViewItem ltvi_Item
String ls_label
String ls_data

if tv_1.Getitem(al_handle,ltvi_Item)= -1 then return -1

ls_label=Trim(String(ltvi_Item.label))
ls_data=Trim(String(ltvi_Item.data))

if ls_label = as_target then
return al_handle
else
ll_handle = tv_1.FindItem(ChildTreeItem!,al_handle)
end if


if ll_handle > 0 then
if tv_1.Getitem(ll_handle,ltvi_Item)= -1 then return 0
ls_label=Trim(String(ltvi_Item.label))
ls_data=Trim(String(ltvi_Item.data))

if ls_label = as_target then
return ll_handle//找到了要添加的節點
else
return wf_reader(ll_handle,as_target)
end if
else
ll_handleOld = al_handle
ll_handle = tv_1.FindItem(NextTreeItem!,ll_handleOld)
do while ll_handle < 0
ll_handle = tv_1.FindItem(ParentTreeItem!,ll_handleOld)
if ll_handle > 0 then
ll_handleOld = ll_handle
ll_handle = tv_1.FindItem(NextTreeItem!,ll_handleOld)
else
ll_handle = tv_1.FindItem(NextTreeItem!,ll_handle)
if ll_handle < 0 then
return -1
end if
end if
loop
if tv_1.Getitem(ll_handle,ltvi_Item)= -1 then return -1
ls_label=String(ltvi_Item.label)
ls_data=String(ltvi_Item.data)

if ls_label = as_target then
return ll_handle//找到了要添加的節點
else
return wf_reader(ll_handle,as_target)
end if
end if


發佈了29 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章