难度:简单 类型: 二叉树
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ 2 2
/ \ / 3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ 2 2
\ 3 3
将该问题转化为根节点的左子树和右子树是否是镜像对称的
两个树互为镜像的条件是:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def convers(self,p,q): if p == None and q == None: return True elif p == None or q == None: return False elif p.val == q.val: return self.convers(p.left, q.right) and self.convers(p.right, q.left) else: return False def isSymmetric(self, root: TreeNode) -> bool: if root: return self.convers(root.left,root.right) else: return True
难度:简单 类型: 二叉树,递归
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
示例
给定二叉树 [3,9,20,null,null,15,7]
3
/ 9 20
/ 15 7
最大的深度是左子树或右子树中深度中更大的一个+1,递归的在子树的子树中寻找
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def maxDepth(self, root: TreeNode) -> int: if root is None: return 0 else: l = self.maxDepth(root.left) r = self.maxDepth(root.right) return max(l,r)+1
原文:https://www.cnblogs.com/xinghaiyige/p/12700964.html