zoukankan      html  css  js  c++  java
  • 【树结构】构造一个树结构(老公给写的)

    function Container()
    {
      this.keySet = [];
      this.entrySet = {};

      this.put = function(key, value)
      {
        if(!this.hasKey(key))
        {
          this.keySet.push(key);
        }

        this.entrySet[key] = value;
          return this;
        }

        this.get = function(key)
        {
          if(!this.hasKey(key))
          {
            return false;
          }

        return this.entrySet[key];
      }

      this.hasKey = function(key)
      {
        for(var i in this.keySet)
        {
          if(this.keySet[i] == key)
          {
            return true;
          }
        }

        return false;
      }

    this.keys = function()
    {
    return this.keySet;
    }

    this.size = function()
    {
    return keySet.length;
    }
    }

    function Region(id, name, pId, level, type)
    {
    this.id = id;
    this.name = name;
    this.pId = pId;
    this.level = level;
    this.type = type;
    this.parent = false;
    this.children = false;
    }

    Region.prototype.getId = function()
    {
    return this.id

    ;
    }

    Region.prototype.getName = function()
    {
    return this.name

    ;
    }

    Region.prototype.getPId = function()
    {
    return this.pId;
    }

    Region.prototype.setParent = function(parent)
    {
    this.parent = parent;
    }

    Region.prototype.getParent = function()
    {
    return this.parent;
    }

    Region.prototype.addChildren = function(child)
    {
    if(!child || !(child instanceof Region))
    {
    return false;
    }

    if(!this.children)
    {
    this.children = [];
    }

    this.children.push(child);
    }

    Region.prototype.getChildren = function()
    {
    return this.children;
    }

    Region.prototype.childOf = function(child)
    {
    if(!this.children || !child || !(child instanceof Region))
    {
    return false;
    }

    for(var i in children)
    {
    if(children[i] == child)
    {
    return true;
    }
    }

    return false;
    }

    var container = new Container();

    for(var i = 0; i < data.length; i++)
    {
    var item = data[i];
    var region = new Region(item.id

    , item.name

    , item.pId, item.level, item.type);
    container.put(item.id

    , region);
    }

    var keys = container.keys();

    for(var i in keys)
    {
    var region = container.get(keys[i]);
    var pId = region.getPId();

    if(pId != 0)
    {
    parentRegion = container.get(pId);
    region.setParent(parentRegion);
    parentRegion.addChildren(region);
    }
    }

    //container.get(340100) 合肥市
    //container.get(340100).getParent()
    //container.get(340100).getChildren();

  • 相关阅读:
    自动化CodeReview
    10个有关RESTful API良好设计的最佳实践
    ASP.NET Core 获取控制器上的自定义属性
    [转] Autofac创建实例的方法总结
    PetaPoco
    LogViewer
    hdoj:2047
    hdoj:2046
    hdoj:2045
    hdoj:2044
  • 原文地址:https://www.cnblogs.com/yyumeng/p/8598916.html
Copyright © 2011-2022 走看看