[英雄星球七月集训LeetCode解题日报] 第19日 二叉树
日报
题目
一、剑指 Offer 26. 树的子结构
1. 题目描述
2. 思路分析
- 直接dfs模拟。
3. 代码实现
class Solution:
def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
if not A:
return False
if A and not B:
return False
def dfs(a,b):
if not a and not b :
return True
if not a :
return False
if not b:
return True
if a.val != b.val:
return False
return dfs(a.left,b.left) and dfs(a.right ,b.right)
return dfs(A,B) or self.isSubStructure(A.left,B) or self.isSubStructure(A.right,B)
二、 958. 二叉树的完全性检验
链接: 958. 二叉树的完全性检验
1. 题目描述
2. 思路分析
层先,遇到一个节点之后,后边都不能有非空节点了。
3. 代码实现
class Solution:
def isCompleteTree(self, root: TreeNode) -> bool:
q = deque([root])
none_flag = False
while q :
new_q = deque()
while q:
fa = q.popleft()
if not fa:
none_flag = True
else:
if none_flag:
return False
new_q.append(fa.left)
new_q.append(fa.right)
q = new_q
return True