本期任务:介绍leetcode中树的几个经典问题的递归解法
【算法】【递归篇】【树】第1节:leetcode100.相同的树
【算法】【递归篇】【树】第2节:leetcode105.从前序与中序遍历序列构造二叉树
【算法】【递归篇】【树】第3节:leetcode210.课程表II
【算法】【递归篇】【树】第4节:leetcode236.二叉树的最近公共祖先
【算法】【递归篇】【树】第5节:leetcode572.另一个树的子树
【算法】【递归篇】【树】第6节:leetcode101.对称二叉树
【算法】【递归篇】【树】第7节:leetcode98.验证二叉搜索树
【算法】【递归篇】【树】第8节:leetcode102.二叉树的层序遍历问题来源101.对称二叉树
101.对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。1
22
\
3443
但是下面这个[1,2,2,nl,3,nl,3]则不是镜像对称的:1
22
\
33
大佬解析画解算法:101.对称二叉树递归结束条件:都为空指针则返回true
只有一个为空则返回false递归过程:判断两个指针当前节点值是否相等
判断A的右子树与B的左子树是否对称
判断A的左子树与B的右子树是否对称
代码
classTeNode:
def__init__(self,x):
self.val=x
self.left=None
self.right=NoneclassSolution:
defisSymmetric(self,root:TeNode)->bool:
defisSame(l,r):
ifnotlandnotr:
turnTrue
ifnotlornotr:
turnFalse
turnl.val==r.valandisSame(l.left,r.left)andisSame(l.right,r.right)
turnisSame(root,root)