type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
//前序遍历
func treeTraversal(root *TreeNode, val *[]int) {
if root == nil {
return
}
*val = append(*val, root.Val) //中
treeTraversal(root.Left, val)//左
treeTraversal(root.Right, val)//右
}
func preorderTraversal(root *TreeNode) []int {
preorder := []int{}
treeTraversal(root, &preorder)
return preorder
}
//后序遍历
func postscriptTreeTraversal(root *TreeNode, val *[]int) {
if root == nil {
return
}
postscriptTreeTraversal(root.Left, val) //左
postscriptTreeTraversal(root.Right, val) //右
*val = append(*val, root.Val) //中
}
func postorderTraversal(root *TreeNode) []int {
preorder := []int{}
postscriptTreeTraversal(root, &preorder)
return preorder
}
//中序遍历
func inorderTreeTraversal(root *TreeNode, val *[]int) {
if root == nil {
return
}
inorderTreeTraversal(root.Left, val) //左
*val = append(*val, root.Val) //中
inorderTreeTraversal(root.Right, val) //右
}
func inorderTraversal(root *TreeNode) []int {
preorder := []int{}
inorderTreeTraversal(root, &preorder)
return preorder
}