go语言实现二叉树的遍历
时间: 2024-03-30 08:23:05 浏览: 51
package main
import "fmt"
type Node struct {
Value int
Left, Right *Node
}
func (node *Node) PreOrder() {
if node == nil {
return
}
fmt.Printf("%d ", node.Value)
node.Left.PreOrder()
node.Right.PreOrder()
}
func (node *Node) InOrder() {
if node == nil {
return
}
node.Left.InOrder()
fmt.Printf("%d ", node.Value)
node.Right.InOrder()
}
func (node *Node) PostOrder() {
if node == nil {
return
}
node.Left.PostOrder()
node.Right.PostOrder()
fmt.Printf("%d ", node.Value)
}
func main() {
root := &Node{Value: 1}
root.Left = &Node{Value: 2}
root.Right = &Node{Value: 3}
root.Left.Left = &Node{Value: 4}
root.Left.Right = &Node{Value: 5}
root.Right.Left = &Node{Value: 6}
root.Right.Right = &Node{Value: 7}
fmt.Println("PreOrder Traversal:")
root.PreOrder()
fmt.Println("\nInOrder Traversal:")
root.InOrder()
fmt.Println("\nPostOrder Traversal:")
root.PostOrder()
}
// 输出结果为:
// PreOrder Traversal:
// 1 2 4 5 3 6 7
// InOrder Traversal:
// 4 2 5 1 6 3 7
// PostOrder Traversal:
// 4 5 2 6 7 3 1