首頁 > 軟體

GoFrame gtree樹形結構的使用技巧範例

2022-06-09 22:00:25

樹形結構

樹形結構gtree具有以下特點:

  • 支援排序,支援有序遍歷
  • 記憶體佔用低
  • 複雜度穩定
  • 適合巨量資料量儲存

一圖勝千言

查詢原始碼

使用場景

  • 關聯陣列場景
  • 巨量資料量記憶體CRUD
  • 排序鍵值對(後面的範例就是前序遍歷和後序遍歷)

使用入門

我們以範例化紅黑樹為例(範例化B樹、高度平衡樹也是一樣的方式)

常用方法

Set() 賦值

Keys() 獲得鍵列表

Values() 獲得值列表

Contains() 判斷是否包含指定的key

t.Print() 可以直接列印樹形結構

也可以通過常規方式列印樹形結構:fmt.Println(t.String())

Iterator() 相關的方法進行樹的遍歷

Clear() 清空數

IsEmpty() 判斷數是否為空

範例程式碼

package main
import (
   "fmt"
   "github.com/gogf/gf/container/gtree"
   "github.com/gogf/gf/util/gutil"
)
func main() {
   //範例化tree
   t := gtree.NewRedBlackTree(gutil.ComparatorInt)
   t.Set(-1, -1)
   for i := 0; i < 10; i++ {
      t.Set(i, i*10)
   }
   fmt.Println("鍵列表:", t.Keys())
   fmt.Println("值列表:", t.Values())
   // 查詢是否包含
   fmt.Println(t.Contains(-1))
   fmt.Println("下面是使用t.Print()列印的樹形結構:")
   t.Print() //列印出樹形結構
   fmt.Println("下面是使用fmt.Println(t.String())列印的樹形結構:")
   fmt.Println(t.String()) //和上面一樣 也是列印出了樹形結構
   t.IteratorDesc(func(key, value interface{}) bool {
      fmt.Println("倒序遍歷:", key, value)
      return true
   })
   t.Clear()
   fmt.Println(t.IsEmpty()) //true
}

列印結果

技巧

最近幾篇文章都提到了資料型別的排序,GoFrame提供的gutil提供了基本資料型別常用的比較方法。

(因為今天上午讀了一篇閱讀原始碼的文章,深受啟發,所以自己也要多多讀讀原始碼了,看下大佬們是怎麼寫的程式碼的。)

以上就是GoFrame gtree樹形結構的使用技巧範例的詳細內容,更多關於GoFrame gtree樹形結構的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com