LeetCode題解(Offer26):判斷二叉樹A是否為二叉樹B的子樹(Python)
題目:原題連結(中等)
標籤:樹、二叉樹、深度優先搜尋
解法 | 時間複雜度 | 空間複雜度 | 執行用時 |
---|---|---|---|
Ans 1 (Python) | O ( N × H ) O(N×H) O(N×H) | O ( N × H ) O(N×H) O(N×H) | 112ms (94.89%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一(深度優先搜尋):
class Solution:
def __init__(self):
self.ans = False
def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
if not A or not B:
return False
def dfs1(a):
if a:
if a.val == B.val:
if dfs2(a.left, B.left) and dfs2(a.right, B.right):
self.ans = True
dfs1(a.left)
dfs1(a.right)
def dfs2(a, b):
if a and b:
return a.val == b.val and dfs2(a.left, b.left) and dfs2(a.right, b.right)
elif a:
return True
elif b:
return False
else:
return True
dfs1(A)
return self.ans
相關文章
- 判斷二叉樹是否為滿二叉樹二叉樹
- LeetCode題解(Offer28):判斷二叉樹是否左右對稱(Python)LeetCode二叉樹Python
- 刷題系列 - Python判斷是否映象對稱二叉樹Python二叉樹
- 遞迴判斷是否二叉平衡樹遞迴
- 如何判斷一棵樹是否是二叉平衡樹~
- LC49判斷二叉樹是否相等二叉樹
- 採用層次遍歷判斷二叉樹為完全二叉樹二叉樹
- 平衡二叉樹,B樹,B+樹二叉樹
- 二叉樹、B樹以及B+樹二叉樹
- [Python手撕]判斷平衡二叉樹Python二叉樹
- 資料結構之樹結構概述(含滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹、紅黑樹、B-樹、B+樹、B*樹)資料結構二叉樹
- [Python手撕]判斷二叉搜尋樹Python
- 【C++】判斷一顆二叉樹是否對稱C++二叉樹
- 5分鐘瞭解二叉樹之LeetCode裡的二叉樹二叉樹LeetCode
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 二叉樹的子結構、深度以及重建二叉樹二叉樹
- 判斷序列是否是二叉搜尋樹的後續遍歷
- 咬文嚼圖式的介紹二叉樹、B樹/B-樹二叉樹
- LeetCode 對稱二叉樹LeetCode二叉樹
- 【資料結構虛擬碼】設計判斷一棵二叉樹是否是二叉排序樹的演算法資料結構二叉樹排序演算法
- BST(二叉搜尋樹)、AVL樹、紅黑樹、2-3樹、B樹、B+樹、LSM樹、Radix樹比較
- Leetcode 題解系列 -- 對稱二叉樹(遞迴)LeetCode二叉樹遞迴
- 相同二叉樹和鏡面二叉樹問題二叉樹
- 刷題系類 - Python判斷二叉樹是否存在一條路徑滿足和值要求Python二叉樹
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- JZ79 判斷是不是平衡二叉樹二叉樹
- 平衡二叉樹(AVL樹)和 二叉排序樹轉化為平衡二叉樹 及C語言實現二叉樹排序C語言
- 二叉樹的子結構二叉樹
- 重建二叉樹[by Python]二叉樹Python
- 排序二叉樹和平衡二叉樹排序二叉樹
- 怎樣推斷一棵二叉樹是全然二叉樹二叉樹
- 二叉樹(順序儲存二叉樹,線索化二叉樹)二叉樹
- leetcode 111 二叉樹的最小深度LeetCode二叉樹
- 資料結構之MySQL獨愛B+樹(二叉樹、AVL樹、紅黑樹、B樹對比)資料結構MySql二叉樹
- LeetCode-110-平衡二叉樹LeetCode二叉樹
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 手擼二叉樹——二叉查詢樹二叉樹