前序遍历
前序遍历的方式是:根节点、左节点、右节点。
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
import "container/list"
func preorderTraversal(root *TreeNode) []int {
// 思路1:使用递归的方法。三要素:返回条件和参数,单层的逻辑。
// 思路2:层次遍历:使用栈。根左右
result := []int{}
if root == nil {
return result
}
stack := list.New()
stack.PushBack(root)
for stack.Len() != 0 {
top := stack.Remove(stack.Back())
node := top.(*TreeNode)
result = append(result, node.Val)
if node.Right != nil {
stack.PushBack(node.Right)
}
if node.Left != nil {
stack.PushBack(node.Left)
}
}
return result
}