main.go
// Go语言·数据结构·二叉树
package main
import (
"fmt"
)
var content string = `
————————————————Go语言·数据结构·二叉树————————————————————
一、二叉树
根节点
父节点
子节点
叶节点
`
type Hero struct {
No int
Name string
Left *Hero
Right *Hero
}
// 前序遍历
// 先输出根节点,然后在输出左子树,在输出右子树
func PreOrder(node *Hero) {
if node != nil {
fmt.Printf("<No.%d %s> \n",node.No,node.Name)
PreOrder(node.Left)
PreOrder(node.Right)
}
}
// 中序遍历
// 先输出根的左子树,然后在根节点,在输出根的右子树
func InfixOrder(node *Hero) {
if node != nil {
PreOrder(node.Left)
fmt.Printf("<No.%d %s> \n",node.No,node.Name)
PreOrder(node.Right)
}
}
// 后序遍历
// 先输出根的左子树,在输出根的右子树,最后根节点
func PostOrder(node *Hero) {
if node != nil {
PreOrder(node.Left)
PreOrder(node.Right)
fmt.Printf("<No.%d %s> \n",node.No,node.Name)
}
}
func main() {
root:= &Hero{
No:1,
Name:"宋江",
}
left1:= &Hero{
No:2,
Name:"吴用",
}
right1:= &Hero{
No:3,
Name:"卢俊义",
}
root.Left = left1
root.Right = right1
right2:= &Hero{
No:4,
Name:"林冲",
}
right1.Right = right2
left3:= &Hero{
No:10,
Name:"Uzi",
}
left4:= &Hero{
No:11,
Name:"Faker",
}
left1.Left = left3
left1.Right = left4
PreOrder(root)
fmt.Println()
InfixOrder(root)
fmt.Println()
PostOrder(root)
}
网友评论