数据结构与算法 — 树的常见操作(Golang)_golang 树结构
以下是一个简单的Golang实现,用于创建和遍历一个二叉树:
package main
import (
"fmt"
)
type Node struct {
data int
leftChild *Node
rightChild *Node
}
func NewNode(data int) *Node {
return &Node{
data: data,
leftChild: nil,
rightChild: nil,
}
}
func (node *Node) InsertLeft(data int) {
node.leftChild = NewNode(data)
}
func (node *Node) InsertRight(data int) {
node.rightChild = NewNode(data)
}
func (node *Node) Print() {
fmt.Print(node.data, " ")
}
func main() {
root := NewNode(1)
root.InsertLeft(2)
root.InsertRight(3)
root.leftChild.InsertLeft(4)
root.leftChild.InsertRight(5)
// 先序遍历
fmt.Println("Preorder traversal:")
preorder(root)
// 中序遍历
fmt.Println("\nInorder traversal:")
inorder(root)
// 后序遍历
fmt.Println("\nPostorder traversal:")
postorder(root)
}
func preorder(node *Node) {
if node == nil {
return
}
node.Print()
preorder(node.leftChild)
preorder(node.rightChild)
}
func inorder(node *Node) {
if node == nil {
return
}
inorder(node.leftChild)
node.Print()
inorder(node.rightChild)
}
func postorder(node *Node) {
if node == nil {
return
}
postorder(node.leftChild)
postorder(node.rightChild)
node.Print()
}
这段代码定义了一个简单的二叉树节点结构体Node
,并提供了插入左右子节点的方法。同时,它还实现了先序、中序和后序遍历三种二叉树的遍历方法。在main
函数中,我们创建了一个简单的二叉树,并使用三种遍历方法打印了树的节点数据。
评论已关闭