Image Modal

合肥
合肥奥数网

合肥站
奥数网

信息学竞赛常用算法与策略:查找(3)

合肥奥数网整理 2013-01-17 15:39:45

  5.3 二叉排序树查找

  因为二叉排序树的左子树若不为空则左子树的所有结点的值均小于它的根结点的值,而右子树若不为空,则右子树的所有结点的值均不小大于它的根结点的值,根据这个性质查找算法如下:

  program pxtree;

  const

  a:array[1..8] of integer=(10,18,3,8,12,2,7,3);

  type point=^nod;

  nod=record

  w:integer;

  right,left:point ;

  end;

  var root,first:point;k:boolean;i,x:integer;

  procedure maketr(d:integer;var p:point);

  begin

  if p=nil then

  begin

  new(p);

  with p^ do begin w:=d;right:=nil;left:=nil end;

  if k then begin root:=p; k:=false end;

  end

  else with p^ do if d>=w then maketr(d,right) else maketr(d,left);

  end;

  function searchtr(x:integer;p:point):boolean;

  begin

  if p=nil then searchtr:=false

  else if x=p^.w then searchtr:=true

  else if x<p^.w then searchtr:=searchtr(x,p^.left)

  else searchtr:=searchtr(x,p^.right);

  end;

  begin

  first:=nil;k:=true;

  for i:=1 to 8 do maketr(a[i],first);

  write('want find data x:');read(x);

  if searchtr(x,first) then writeln('yes') else writeln('No');

  end.

首页 上一页 下一页 尾页

相关推荐

点击查看更多
重点初中
首页 导航