u012833537 2019-07-02 22:15 采纳率: 100%
浏览 401
已采纳

求:把字符串变成树节点的算法 C# 或者JAVA

求:把字符串变成树节点的代码
数码家居>电子类>汽车用品>车用收纳箱
数码家居>电子类>汽车用品>车载香水/香薰
数码家居>电子类>生活电器>其他
数码家居>电子类>生活电器>净水设备
数码家居>电子类>生活电器>吸尘器
数码家居>电子类>生活电器>扫地机器人
数码家居>电子类>生活电器>空气净化器
服饰户外>内衣袜品>内裤
服饰户外>内衣袜品>塑身衣/裤
服饰户外>内衣袜品>文胸
服饰户外>内衣袜品>睡衣/家居服
服饰户外>内衣袜品>袜子
服饰户外>女装>T恤
服饰户外>女装>休闲裤

比如  数码家居>电子类>汽车用品>车用收纳箱

数码家居 1 电子类 2 汽车用品3 车用收纳箱4

数码家居1 电子类 2 汽车用品3 车载香水/香薰5

服饰户外>内衣袜品>内裤
服饰户外 9 内衣袜品 10 内裤 11


  class CNode
{
    private int _NodeID = 0;

    public int NodeID
    {
        get { return _NodeID; }
        set { _NodeID = value; }
    }
    private string _NodeName = "";

    public string NodeName
    {
        get { return _NodeName; }
        set { _NodeName = value; }
    }
    private int _   Parentid = 0;

    public int  Parentid
    {
        get { return _  parentid; }
        set { _ parentid = value; }
    }
}
  • 写回答

3条回答 默认 最新

  • threenewbee 2019-07-03 10:12
    关注

    完整代码+exe采纳我的回答以后留下email给你

    其他人如果需要:https://download.csdn.net/download/caozhy/11271091

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Q767996
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            class CNode
            {
                private int _NodeID = 0;
    
                public int NodeID
                {
                    get { return _NodeID; }
                    set { _NodeID = value; }
                }
                private string _NodeName = "";
    
                public string NodeName
                {
                    get { return _NodeName; }
                    set { _NodeName = value; }
                }
                private int _parentid = 0;
    
                public int Parentid
                {
                    get { return _parentid; }
                    set { _parentid = value; }
                }
                public override string ToString()
                {
                    return NodeName;
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                var nodes = new List<CNode>();
                int id = 0;
                foreach (string s in textBox1.Lines)
                {
                    string[] paths = s.Split('>');
                    CNode pnode = null;
                    for (int i = 0; i < paths.Length; i++)
                    {
                        var pnode1 = nodes.FirstOrDefault(x => x.NodeName == paths[i]);
                        if (pnode1 == null)
                        {
                            pnode1 = new CNode() { NodeID = id++, NodeName = paths[i], Parentid = pnode == null ? -1 : pnode.NodeID };
                            nodes.Add(pnode1);
                        }
                        pnode = pnode1;
                    }            
                }
                loadroot(nodes);
            }
    
            private void loadroot(List<CNode> list)
            {
                foreach (var item in list.Where(x => x.Parentid == -1))
                {
                    var tn = treeView1.Nodes.Add(item.NodeName);
                    loadchild(list, tn, item);
                }
            }
    
            private void loadchild(List<CNode> list, TreeNode tn, CNode node)
            {
                foreach (var item in list.Where(x => x.Parentid == node.NodeID))
                {
                    var tn1 = tn.Nodes.Add(item.NodeName);
                    loadchild(list, tn1, item);
                }
            }
        }
    }
    
    

    图片说明

    完整代码+exe采纳我的回答以后留下email给你

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 matlab appdesigner私有函数嵌套整合
  • ¥15 给我一个openharmony跑通webrtc实现视频会议的简单demo项目,sdk为12
  • ¥15 vb6.0使用jmail接收smtp邮件并另存附件到D盘
  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云
  • ¥15 C# 调用Bartender打印机打印
  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题