代码随想录算法训练营第十二天 | 144、145、94

144. 二叉树的前序遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

// Definition for a binary tree node.
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}

func preorderTraversal(root *TreeNode) []int {
var result []int
var traverse func(*TreeNode)
traverse = func(node *TreeNode) {
if node == nil {
return
}
// 前序遍历:根 -> 左 -> 右
result = append(result, node.Val)
traverse(node.Left)
traverse(node.Right)
}
traverse(root)
return result
}

145. 二叉树的后序遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

func postorderTraversal(root *TreeNode) []int {
var result []int
var traverse func(*TreeNode)
traverse = func(node *TreeNode) {
if node == nil {
return
}
// 后序遍历:左 -> 右 -> 根
traverse(node.Left)
traverse(node.Right)
result = append(result, node.Val)
}
traverse(root)
return result
}

94. 二叉树的中序遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/

func inorderTraversal(root *TreeNode) []int {
var result []int
var traverse func(*TreeNode)
traverse = func(node *TreeNode) {
if node == nil {
return
}
// 中序遍历:左 -> 根 -> 右
traverse(node.Left)
result = append(result, node.Val)
traverse(node.Right)
}
traverse(root)
return result
}