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+樹二叉樹
- 採用層次遍歷判斷二叉樹為完全二叉樹二叉樹
- 資料結構之樹結構概述(含滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹、紅黑樹、B-樹、B+樹、B*樹)資料結構二叉樹
- 《劍指offer》:[39-1]判斷是否為平衡二叉樹二叉樹
- [Python手撕]判斷平衡二叉樹Python二叉樹
- 【C++】判斷一顆二叉樹是否對稱C++二叉樹
- [Python手撕]判斷二叉搜尋樹Python
- 【劍指offer】判斷二叉樹平衡二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 二叉樹的子結構、深度以及重建二叉樹二叉樹
- 5分鐘瞭解二叉樹之LeetCode裡的二叉樹二叉樹LeetCode
- 咬文嚼圖式的介紹二叉樹、B樹/B-樹二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 二叉樹的子樹和子結構 c++二叉樹C++
- 二叉樹 & 二叉查詢樹二叉樹
- 相同二叉樹和鏡面二叉樹問題二叉樹
- 平衡二叉樹(AVL樹)和 二叉排序樹轉化為平衡二叉樹 及C語言實現二叉樹排序C語言
- 【資料結構虛擬碼】設計判斷一棵二叉樹是否是二叉排序樹的演算法資料結構二叉樹排序演算法
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 二叉樹的應用(1)--二叉樹排序樹基本操作二叉樹排序
- 二叉樹的子結構二叉樹
- 排序二叉樹和平衡二叉樹排序二叉樹
- 二叉查詢樹(二叉排序樹)排序
- JZ79 判斷是不是平衡二叉樹二叉樹
- 二叉樹(順序儲存二叉樹,線索化二叉樹)二叉樹
- 怎樣推斷一棵二叉樹是全然二叉樹二叉樹
- 資料結構之MySQL獨愛B+樹(二叉樹、AVL樹、紅黑樹、B樹對比)資料結構MySql二叉樹
- 手擼二叉樹——二叉查詢樹二叉樹
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 雜湊,二叉樹,紅黑樹,B樹,B+樹,LSM樹等資料結構做索引比較二叉樹資料結構索引
- 推斷二叉樹(進階)二叉樹
- 樹(2)--二叉樹的遍歷(非遞迴)+線索二叉樹二叉樹遞迴