1. 自顶向下
递归的自顶向下就是先进行操作,再调用自己进行递归
给定一个二叉树,检查它是否是镜像对称的。
/*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/func isSymmetric(root *TreeNode) bool{return helper(root,root)}func helper(l,r *TreeNode) bool{if l==nil && r==nil{return true}if l==nil || r==nil{return false}return l.Val==r.Val && helper(l.Left,r.Right) && helper(l.Right,r.Left)}
这里就是先判断两个节点的值是否相等,再调用自己传两个节点进去判断是否相等进行递归。
这就是递归的自顶向下,从根节点开始判断,延续到子树。
2. 自底向上
递归的自底向上就是先调用自己进行递归,再进行操作
求二叉树的深度
/*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/func maxDepth(root *TreeNode) int {if root ==nil{return 0}left := maxDepth(root.Left)rigth := maxDepth(root.Right)if left >= rigth{return left+1}else{return rigth+1}}
这里就是先调用自己进行递归,得到自己的左右子树深度,再判断左右子树的深度。
这就是递归的自底向上,先摸进去到底部,再挖上来。
