在Go中,可以使用遞歸函數來遍歷樹形數據結構。下面是一個示例代碼,演示了如何使用遞歸函數遍歷一棵二叉樹:
package main
import "fmt"
type Node struct {
Value int
Left *Node
Right *Node
}
func traverseTree(node *Node) {
if node == nil {
return
}
// 遍歷左子樹
traverseTree(node.Left)
// 打印當前節點的值
fmt.Println(node.Value)
// 遍歷右子樹
traverseTree(node.Right)
}
func main() {
// 構建一棵二叉樹
root := &Node{
Value: 1,
Left: &Node{
Value: 2,
Left: &Node{
Value: 4,
Left: nil,
Right: nil,
},
Right: &Node{
Value: 5,
Left: nil,
Right: nil,
},
},
Right: &Node{
Value: 3,
Left: &Node{
Value: 6,
Left: nil,
Right: nil,
},
Right: nil,
},
}
// 遍歷二叉樹
traverseTree(root)
}
在這個示例代碼中,我們首先定義了一個簡單的二叉樹節點結構Node
,包含一個整數值Value
和左右子節點Left
和Right
。然后定義了一個遞歸函數traverseTree
,用來遍歷二叉樹。在函數中,首先判斷當前節點是否為空,如果為空則直接返回;然后遞歸遍歷左子樹、打印當前節點的值、再遞歸遍歷右子樹。最后在main
函數中構建了一棵二叉樹,并調用traverseTree
函數進行遍歷。