go语言实现【队列】|二叉树的【先序遍历】【创建】

简介: go语言实现【队列】|二叉树的【先序遍历】【创建】

正文


简介go语言实现【队列】|二叉树的【先序遍历】【创建】


一 go语言实现队列#


var q Queue
func initQueue() *Queue {
  if q.nodeList == nil {
    q = Queue{}
    q.new()
  }
  return &q
}
type Queue struct {
  nodeList [] *BiTreeNode
}
type IQueue interface {
  new() *Queue
  enqueue(node *BiTreeNode)
  dequeue() *BiTreeNode
  isEmpty() bool
  size() int
}
func (q *Queue) new() *Queue {
  q.nodeList = []*BiTreeNode{}
  return q
}
func (q *Queue) enqueue(node *BiTreeNode) {
  q.nodeList = append(q.nodeList, node)
}
func (q *Queue) dequeue() *BiTreeNode {
  if 0 == len(q.nodeList) {
    return nil
  } else {
    item := q.nodeList[0]
    q.nodeList = q.nodeList[1:len(q.nodeList)]
    return item
  }
}
func (q *Queue) isEmpty() bool {
  return len(q.nodeList) == 0
}
func (q *Queue) size() int {
  return len(q.nodeList)
}


二 go语言实现创造二叉树#


func createBiTree(nodes [] int) *BiTreeNode {
  //var root BiTreeNode
  if nil != nodes && 0 != len(nodes) {
    root := BiTreeNode{}
    root.val = nodes[0]
    //nodes = nodes[1:len(nodes)]
    q := initQueue()
    q.enqueue(&root)
    var len int = len(nodes)
    for i := 1; i < len; {
      temp := q.dequeue()
      if -1 != nodes[i] {
        left := BiTreeNode{}
        left.val = nodes[i]
        q.enqueue(&left)
        temp.left = &left
      }
      i++
      if -1 != nodes[i] {
        right := BiTreeNode{}
        right.val = nodes[i]
        q.enqueue(&right)
        temp.right = &right
      }
      i++
    }
    return &root
  }
  return nil
}


结构#


12.jpg


三 先序遍历二叉树#


func preOrderBiTree(root *BiTreeNode) {
  if nil != root {
    fmt.Println((*root).val)
    preOrderBiTree((*root).left)
    preOrderBiTree((*root).right)
  }
}


四 其他信息#


二叉树的节点信息


type BiTreeNode struct {
  val   int
  left  *BiTreeNode
  right *BiTreeNode
}
相关文章
|
14小时前
|
JavaScript 前端开发 Java
Go语言入门【java->go】
Go语言入门【java->go】
7 2
|
16小时前
|
IDE Linux Go
|
16小时前
|
Go 开发工具
Go 语言开发工具
Go 语言开发工具
9 3
|
17小时前
|
NoSQL 安全 Go
Go 语言 mongox 库:简化操作、安全、高效、可扩展、BSON 构建
go mongox 是一个基于泛型的库,扩展了 MongoDB 的官方库。通过泛型技术,它实现了结构体与 MongoDB 集合的绑定,旨在提供类型安全和简化的数据操作。 go mongox 还引入链式调用,让文档操作更流畅,并且提供了丰富的 BSON 构建器和内置函数,简化了 BSON 数据的构建。 此外,它还支持插件化编程和内置多种钩子函数,为数据库操作前后的自定义逻辑提供灵活性,增强了应用的可扩展性和可维护性。
23 4
|
1天前
|
存储 Go iOS开发
Go 语言接口
Go 语言接口
10 2
|
1天前
|
编译器 Go
Go 语言类型转换
Go 语言类型转换
13 3
|
2天前
|
Go 开发者
Go 语言递归函数
Go 语言递归函数
8 0
|
2天前
|
Go 定位技术 索引
Go 语言Map(集合)
Go 语言Map(集合)
7 0
|
2天前
|
Go 索引
Go 语言范围(Range)
Go 语言范围(Range)
6 0
|
5天前
|
Go 索引
Go 语言切片(Slice)
Go 语言切片(Slice)
13 1