二叉树的遍历
package main
import "fmt"
//二叉树的遍历
//二叉树的遍历分为三种情况,前序遍历、中序遍历、后去遍历
//定义二叉树
type Node struct {
Id int
Name string
Left *Node
Right *Node
}
//前序遍历
func (this *Node)PreOrder(node *Node) {
if node != nil{
fmt.Println(node.Name)
this.PreOrder(node.Left)
this.PreOrder(node.Right)
}
}
//中序遍历
func (this *Node)FixOrder(node *Node) {
if node != nil{
this.FixOrder(node.Left)
fmt.Println(node.Name)
this.FixOrder(node.Right)
}
}
//后序遍历
func (this *Node)NextOrder(node *Node) {
if node != nil{
this.NextOrder(node.Left)
this.NextOrder(node.Right)
fmt.Println(node.Name)
}
}
func main() {
node1 := &Node{
Id: 1,
Name: "node1",
}
node2 := &Node{
Id: 2,
Name: "node2",
}
node3 := &Node{
Id: 3,
Name: "node3",
}
node4 := &Node{
Id: 4,
Name: "node4",
}
node5 := &Node{
Id: 5,
Name: "node5",
}
node6 := &Node{
Id: 6,
Name: "node6",
}
node7 := &Node{
Id: 7,
Name: "node7",
}
node1.Left = node2
node1.Right = node3
node2.Left = node4
node2.Right = node5
node3.Left = node6
node3.Right = node7
//前序便利
//node1.PreOrder(node1)
//中序便利
//node1.FixOrder(node1)
//后序便利
node1.NextOrder(node1)
}