zoukankan      html  css  js  c++  java
  • Golang的树的实现

    golang的树结构的简单实现,未完善,代码如下:

      1 package main
      2 
      3 import (
      4     "fmt"
      5     "errors"
      6 )
      7 
      8 func main() {
      9     var t Tree
     10     t.Create("美利坚合众国")
     11     t.AddSon("国土安全部")
     12     t.AddSon("财政部")
     13     t.AddSon("信息科技部")
     14     t.AddSon("能源部")
     15     t.AddSon("军事委员会")
     16     fmt.Println(t.GetName(), "共有", t.GetDegree(), "个部门")
     17     fmt.Println("------------------------------------------")
     18     for k, v := range t.son {
     19         fmt.Println(t.GetName(), "", k, "个部门是", v.GetName())
     20     }
     21 
     22     s,err := t.GetSon("国土安全部")
     23     if err == nil {
     24         s.AddSon("质量安全办")
     25         s.AddSon("征地拆迁办")
     26     }
     27     fmt.Println("==========================================")
     28     fmt.Println(s.GetName(), "共有", s.GetDegree(), "个部门")
     29     fmt.Println("------------------------------------------")
     30     for k, v := range s.son {
     31         fmt.Println(s.GetName(), "", k, "个部门是", v.GetName())
     32     }
     33 
     34     s1,err := s.GetSon("质量安全办")
     35     if err == nil {
     36         s1.AddSon("特朗普")
     37         s1.AddSon("蓬佩奥")
     38         s1.AddSon("拜登")
     39         s1.AddSon("邓文迪")
     40         s1.AddSon("李冰冰")
     41     }
     42     fmt.Println("==========================================")
     43     fmt.Println(s1.GetName(), "共有", s1.GetDegree(), "名员工")
     44     fmt.Println("------------------------------------------")
     45     for k, v := range s1.son {
     46         fmt.Println(s1.GetName(), "", k, "名员工是", v.GetName())
     47     }
     48     s1.DeleteSon("蓬佩奥")
     49     fmt.Println("==========================================")
     50     fmt.Println(s1.GetName(), "共有", s1.GetDegree(), "名员工")
     51     fmt.Println("------------------------------------------")
     52     for k, v := range s1.son {
     53         fmt.Println(s1.GetName(), "", k, "名员工是", v.GetName())
     54     }
     55 }
     56 
     57 type Tree struct {
     58     name   string
     59     parent *Tree
     60     son    []*Tree
     61     data   interface{}
     62 }
     63 
     64 func (this *Tree) Create(name string) {
     65     this.name = name
     66     this.son = nil
     67 }
     68 
     69 func (this *Tree) GetName() string {
     70     return this.name
     71 }
     72 
     73 func (this *Tree) GetSon(nameofson string) (son *Tree, err error) {
     74     for _, v := range this.son {
     75         if v.GetName() == nameofson {
     76             return v,nil
     77         }
     78     }
     79     return nil, errors.New("No son's name call" + nameofson)
     80 }
     81 
     82 func (this *Tree) AddSon(nameofson string) {
     83     var Son Tree
     84 
     85     Son.name = nameofson
     86     Son.parent = this
     87     this.son = append(this.son, &Son)
     88 }
     89 
     90 func (this *Tree) DeleteSon(nameofson string) {
     91     for k, v := range this.son {
     92         if v.GetName() == nameofson {
     93             this.son = append(this.son[:k], this.son[(k+1):]...)
     94         }
     95     }
     96 }
     97 
     98 func (this Tree) GetDegree() int {
     99     return len(this.son)
    100 }

    运行结果如下:

    美利坚合众国 共有 5 个部门
    ------------------------------------------
    美利坚合众国 第 0 个部门是 国土安全部
    美利坚合众国 第 1 个部门是 财政部
    美利坚合众国 第 2 个部门是 信息科技部
    美利坚合众国 第 3 个部门是 能源部
    美利坚合众国 第 4 个部门是 军事委员会
    ==========================================
    国土安全部 共有 2 个部门
    ------------------------------------------
    国土安全部 第 0 个部门是 质量安全办
    国土安全部 第 1 个部门是 征地拆迁办
    ==========================================
    质量安全办 共有 5 名员工
    ------------------------------------------
    质量安全办 第 0 名员工是 特朗普
    质量安全办 第 1 名员工是 蓬佩奥
    质量安全办 第 2 名员工是 拜登
    质量安全办 第 3 名员工是 邓文迪
    质量安全办 第 4 名员工是 李冰冰
    ==========================================
    质量安全办 共有 4 名员工
    ------------------------------------------
    质量安全办 第 0 名员工是 特朗普
    质量安全办 第 1 名员工是 拜登
    质量安全办 第 2 名员工是 邓文迪
    质量安全办 第 3 名员工是 李冰冰

    这是未完全实现的版本。

  • 相关阅读:
    django模板语言导入自定html文件内容
    django模板语言中的自定义函数
    ID3决策树
    K近邻算法
    Mini-Batch 、Momentum、Adam算法的实现
    python3安装scrapy教程
    numpy高级应用
    numpy.random随机数生成
    numpy 线性代数
    numpy文件操作
  • 原文地址:https://www.cnblogs.com/merrynuts/p/13470329.html
Copyright © 2011-2022 走看看