NOTE
实现二叉树先序中序和后序遍历
实现二叉树先序、中序和后序遍历的笔记。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 题目描述
分别按照二叉树先序,中序和后序打印所有的节点。
2. 思路
- 思路一
- 递归
- 思路二
- 颜色标记法
3. 实现
package main
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
func threeOrders(root *TreeNode) [][]int {
if root == nil {
return nil
}
res := make([][]int, 0)
pre := make([]int, 0)
preOrder(root, &pre)
res = append(res, pre)
mid := make([]int, 0)
midOrder(root, &mid)
res = append(res, mid)
post := make([]int, 0)
postOrder(root, &post)
res = append(res, post)
return res
}
func postOrder(root *TreeNode, res *[]int) {
if root == nil {
return
}
postOrder(root.Left, res)
postOrder(root.Right, res)
*res = append(*res, root.Val)
}
func midOrder(root *TreeNode, res *[]int) {
if root == nil {
return
}
midOrder(root.Left, res)
*res = append(*res, root.Val)
midOrder(root.Right, res)
}
func preOrder(root *TreeNode, res *[]int) {
if root == nil {
return
}
*res = append(*res, root.Val)
preOrder(root.Left, res)
preOrder(root.Right, res)
}
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看