题目
一、144. 二叉树的前序遍历
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
// 根-左-右
func preorderTraversal(root *TreeNode) []int {
res := []int{}
traverse(root, &res)
return res
}
func traverse(node *TreeNode, res *[]int) {
if node != nil {
*res = append(*res, node.Val)
traverse(node.Left, res)
traverse(node.Right, res)
}
}
二、94. 二叉树的中序遍历
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
// 左-根-右
func inorderTraversal(root *TreeNode) []int {
res := []int{}
traverse(root, &res);
return res
}
func traverse(node *TreeNode, res *[]int) {
if node != nil {
traverse(node.Left, res)
*res = append(*res, node.Val)
traverse(node.Right, res)
}
}
三、二叉树的后序遍历
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
// 左-右-根
func postorderTraversal(root *TreeNode) []int {
res := []int{}
traverse(root, &res)
return res
}
func traverse(node *TreeNode, res *[]int) {
if node != nil {
traverse(node.Left, res)
traverse(node.Right, res)
*res = append(*res, node.Val)
}
}