二叉树
- 求二叉树深度时,使用前序遍历,从根节点遍历到叶子节点
- 求高度时,使用后序遍历,从叶子结点到根节点
遍历二叉树
// 二叉树遍历
func fontForBinaryTree(node *TreeNode) []int{
// 递归方式
res := make([]int, 0, 0)
if node == nil {
return res
}
// 递归函数的传参及返回值
var in func(n *TreeNode)
in = func(n *TreeNode) {
// 递归终止条件
if n == nil {
return
}
// 前序遍历单层逻辑,中 左 右
res = append(res, n.Val)
in(n.Left)
in(n.Right)
// 中序遍历,左 中 又
in(n.Left)
res = append(res, n.Val)
in(n.Right)
// 后序遍历,左 右 中
in(n.Left)
in(n.Right)
res = append(res, n.Val)
}
in(node)
return res
}
翻转二叉树
// 翻转二叉树
func reverseTree(node *TreeNode) *TreeNode {
// 使用前序遍历方式翻转
if node == nil {
return nil
}
//
tmp := node.Left
node.L