本帖最后由 zhengyc653 于 2015-01-10 16:48:17 编辑

解决方案 »

  1.   


    //edit1.text:='abc,def,ghi';procedure TForm1.Button1Click(Sender: TObject);
    var
      sList:TStringList;
      i,j:Integer;
      NodeList:TList;  procedure GetLevelNodes(ALevel:Integer);
      var
        i:Integer;
      begin
        NodeList.Clear;
        for i:=0 to TreeView1.Items.Count-1 do
          if TreeView1.Items[i].Level=ALevel then
            NodeList.Add(TreeView1.Items[i]);
      end;
      
      procedure AddNode(const ATxt:string;APNode:TTreeNode);
      var
        i:Integer;
      begin
        if trim(ATxt)='' then exit;
        for i:=1 to length(ATxt) do
          TreeView1.Items.AddChild(APNode,ATxt[i]);
      end;
    begin
      sList:=TStringList.Create;
      try
        sList.Delimiter:=',';
        sList.DelimitedText:=edit1.Text;
        if sList.Count<=0 then exit;
        TreeView1.Items.Clear;
        AddNode(sList[0],nil);    NodeList:=TList.Create;
        try
          for i:=1 to sList.Count-1 do
          begin
            GetLevelNodes(i-1);
            for j:=0 to NodeList.Count-1 do
              AddNode(sList[i],TTreeNode(NodeList[j]));
          end;
        finally
          NodeList.Free;
        end;
      finally
        sList.Free;
      end;  TreeView1.FullExpand;
    end;
      

  2.   

    这个问题像是算法考试题,是一个指针递归遍历的算法。
    我的看法是:题目让你把一个父节点的全部儿子节点找出来。//定义节点
    TpNode=^TaNode;
    TaNode=record
      Data:array of yourDataType;//每层的元素
      Next:TpNode;//下一层指针
    end;//至于节点的赋值,我不详细写了,就是每层的元素赋值完成之后NEW一下,把NEXT指向NEW
    //下面的过程简单演示了递归的方法,我学艺不精,你自己也研究一下吧
    procedure crNode(aNode:TpNode);
    var i:Integer;
    begin
    for i:=Low(aNode.Data) to High(aNode.Data) do
    if aNode.Next<>nil then
         crNode(aNode.Next)
    else 
      //添加节点;
    end;
      

  3.   

    procedure TForm1.Button2Click(Sender: TObject);
    var A,B,C:TStringList;
        i,j,k:Integer;
        NowNode,NowNode1,NowNode2:TTreeNode;
    begin
      A:=TStringList.Create;
      B:=TStringList.Create;
      C:=TStringList.Create;
      A.Delimiter:=',';
      B.Delimiter:=',';
      C.Delimiter:=',';
      A.DelimitedText:='A,B,C';
      B.DelimitedText:='D,E,F';
      C.DelimitedText:='H,I,J';
      if A.Count<=0 then exit;
      TreeView1.Items.Clear;
      For i:=0 to A.Count-1 do
      begin
        NowNode:=TreeView1.Items.Add(nil,A.Strings[i]);
        For j:=0 to B.Count-1 do
        begin
          NowNode1:=TreeView1.Items.AddChild(NowNode,B.Strings[j]);
          For k:=0 to C.Count-1 do
          begin
            NowNode2:=TreeView1.Items.AddChild(NowNode1,C.Strings[k]);
          end;
        end;
      end;
      TreeView1.FullExpand;
    end;
      

  4.   

    完成TreeView,图示。完全实现你的要求。
      

  5.   

    不好意思,代码尾部加入:
      A.Free;
      B.Free;
      C.Free;
      

  6.   

    先加载到TreeView上吧TreeView.SaveToFile就是你要的结构