FreePascal在binaryTree上添加元素

时间:2014-02-21 16:00:01

标签: binary-tree pascal freepascal

所以我试图在二叉树上添加属于特定客户端号码的所有“花费”数据。

Type

pointer_tree = ^bTree;    
bTree = record
     nclient: integer;
     spent: integer;
     big, small: pointer_tree
end;

{adder is 0}
function add (pT: pointer_tree; client_number: integer; adder: integer): integer;
begin
     if pT <> nil then begin
        if pT^.nclient = client_number then
           adder:= pT^.spent + adder
        add(pT^.big,client_number,adder);
        add(pT^.small,client_number,adder);
     end;
     add:= adder;
end;

函数add不会返回添加的元素,而是返回一个随机数。还有更好的方法来添加它们吗?

1 个答案:

答案 0 :(得分:1)

我不喜欢你使用变量'adder'作为函数参数的方式,也不喜欢计算值的临时存储。我认为如果函数编写如下,没有'adder'变量会更好:

function add (pT: pointer_tree; client_number: integer): integer;
begin
 result:= 0;
 if pT <> nil then 
  begin
   if pT^.nclient = client_number then result:= pT^.spent;
   inc (result, add (pT^.big, client_number));
   inc (result, add (pT^.small, client_number));
  end;
end;

顺便说一句,你的代码在'adder:= pT ^ .spent + adder'行之后缺少分号。