package main
import "fmt"
type Node struct {
Key int
Left *Node
Right *Node
}
func preorderTraversal(node *Node) {
if node != nil {
// Step 1: Visit the root node
fmt.Printf("%d ", node.Key)
// Step 2: Traverse the left subtree
preorderTraversal(node.Left)
// Step 3: Traverse the right subtree
preorderTraversal(node.Right)
}
}
func main() {
// Example usage
root := &Node{Key: 1}
root.Left = &Node{Key: 2}
root.Right = &Node{Key: 3}
root.Left.Left = &Node{Key: 4}
root.Left.Right = &Node{Key: 5}
fmt.Println("Preorder Traversal:")
preorderTraversal(root)
}