求二叉树的遍历代码,在线等(50分)

  • 主题发起人 主题发起人 水边的汤姆
  • 开始时间 开始时间

水边的汤姆

Unregistered / Unconfirmed
GUEST, unregistred user!
那位兄弟有以二叉树的查找方式查找一个队列的代码?请赐教!
我有一个TStrings对象,里面存放的是{'xx','yy','zz',...},队列的顺序,就是已经排好序的XX,YY,ZZ的顺序。现在我想查找到ZZ所在的索引值,采用二叉树的遍历数组的方法进行查找?请问如何实现?
 
你是前序,中序,还是后序呀
 
TStrings怎么个二叉树找呀?它可是一个线性对象啊.
你说的大概是二分法查找吧.
 
同意楼上的,TStrings数据的存储是线性的,无法使用二叉树的方法查找。
 
是啊,兄弟,就是二分法查找啊,这个算法类似于二叉树的查找方法阿。
 
线性存储跟二叉树存储存在本质上的区别。
对于 TStrings 一般使用 IndexOf 就够了,效率也是很高的。
 
请参考一二:
或实现GetItemValue函数.

TGetItemValue=function(Item:Pointer):Integer;
//在一个升序排列的指针列表中是否有指定的序号.二分法查找
function ListGetItemIndexInAscending(List:TList;GetItemValue:TGetItemValue;Value:Integer):Integer;
var
i,j,m:Integer;
begin
Result:=-1;
if(List=nil)or(List.Count=0)then
exit;
i:=0;
j:=List.Count-1;
if GetItemValue(List)=Value then
Result:=i
else
if GetItemValue(List[j])=Value then
Result:=j
else
begin
if(GetItemValue(List)<Value)and(Value<GetItemValue(List[j]))then
begin
m:=(i+j)div 2;
while i<m do
begin
if GetItemValue(List[m])=Value then
begin
Result:=m;
Break;
end
else
if Value>GetItemValue(List[m])then
i:=m
else
j:=m;
m:=(i+j)div 2;
end;
end;
end;
end;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部