LeetCode题目
144.二叉树的前序遍历
题目链接:Binary Tree Preorder Traversal - LeetCode
代码如下:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func traversal(node *TreeNode, res *[]int) {
if node == nil {
return
}
*res = append(*res, node.Val)
traversal(node.Left, res)
traversal(node.Right, res)
}
func preorderTraversal(root *TreeNode) []int {
res := []int{}
traversal(root, &res)
return res
}
145.二叉树的后序遍历
题目链接:Binary Tree Postorder Traversal - LeetCode
代码如下:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func traversal(node *TreeNode, res *[]int) {
if node == nil {
return
}
traversal(node.Left, res)
traversal(node.Right, res)
*res = append(*res, node.Val)
}
func postorderTraversal(root *TreeNode) []int {
res := []int{}
traversal(root, &res)
return res
}
94.二叉树的中序遍历
题目链接:Binary Tree Inorder Traversal - LeetCode
代码如下:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func traversal(node *TreeNode, res *[]int) {
if node == nil {
return
}
traversal(node.Left, res)
*res = append(*res, node.Val)
traversal(node.Right, res)
}
func inorderTraversal(root *TreeNode) []int {
res := []int{}
traversal(root, &res)
return res
}
总结
- 递归三要素:递归函数的参数和返回值、终止条件、单层递归的逻辑
- 二叉树种类:满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树
- 二叉树的存储方式:链式存储(指针)、顺序存储(数组)
- 二叉树的遍历方式:深度优先遍历(前/中/后序遍历)、广度优先遍历(层次遍历)