温馨提示×

Go中如何使用递归函数遍历树形数据结构

go
小亿
119
2024-04-02 19:29:06
栏目: 编程语言

在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和左右子节点LeftRight。然后定义了一个递归函数traverseTree,用来遍历二叉树。在函数中,首先判断当前节点是否为空,如果为空则直接返回;然后递归遍历左子树、打印当前节点的值、再递归遍历右子树。最后在main函数中构建了一棵二叉树,并调用traverseTree函数进行遍历。

0