问题描述:
给你二叉树的根节点root,返回它节点值的前序遍历。
示例:
输入:head = [1, null, 2, 3]
输出:[1, 2, 3]
解题思路:
递归二叉树
package main
import (
"fmt"
)
type treeNode struct {
value int
left *treeNode
right *treeNode
}
func (t *treeNode) insert(v *treeNode) {
if t.value == v.value {
return
}
if v.value > t.value {
if t.right == nil {
t.right = v
} else {
t.right.insert(v)
}
} else {
if t.left == nil {
t.left = v
} else {
t.left.insert(v)
}
}
}
// preOrder 前序遍历 根 -> 左子树 -> 右子树
func preOrder(t *treeNode) {
if t != nil {
fmt.Println(t.value)
}
if t.left != nil {
preOrder(t.left)
}
if t.right != nil {
preOrder(t.right)
}
}
func initTree(arr []int) *treeNode {
if len(arr) == 0 {
return nil
}
tree := &treeNode{
value: arr[0],
}
for _, v := range arr[0:] {
tree.insert(&treeNode{
value: v,
})
}
return tree
}
func main() {
binaryTree := initTree([]int{1, 2, 3})
preOrder(binaryTree)
binaryTreeOne := initTree([]int{1, 2})
preOrder(binaryTreeOne)
}