檢驗一顆樹是不是另一顆樹的子結構
思路:遍歷樹,使用遞迴方法。1.先判斷節點值是否相等,如果相等則繼續判斷他們的子樹是否相等;2.如果不相等則判斷他們的子樹是否相等。這樣一直遞迴。退出條件為知道子樹到葉節點了,
class BinaryTreeNode(object):
def __init__(self,data,left=None,right=None):
self.data = data
self.left = left
self.right = right
A = BinaryTreeNode("A")
B = BinaryTreeNode("B")
C = BinaryTreeNode("C")
D = BinaryTreeNode("D")
E = BinaryTreeNode("E")
F = BinaryTreeNode("F")
G = BinaryTreeNode("G")
A.data = 8
B.data = 8
C.data = 7
D.data = 9
E.data = 2
F.data = 4
G.data = 7
A.left = B
A.right = C
B.left = D
B.right=E
E.left = F
E.right = G
A_ = BinaryTreeNode("A_")
B_ = BinaryTreeNode("B_")
C_ = BinaryTreeNode("C_")
A_.data = 8
B_.data = 9
C_.data = 2
A_.left = B_
A_.right = C_
def isSub(tree1,tree2):
if tree2 is None:
return True
if tree1 is None:
return False
if tree1.data != tree2.data:
return False
return isSub(tree1.left,tree2.left) and isSub(tree1.right,tree2.right)
def hashB(tree1,tree2):
r = False
if tree1 is None or tree2 is None:
return False
if tree1.data == tree2.data:
r = isSub(tree1,tree2)
if not r:
r = hashB(tree1.left,tree2)
if not r:
r = hashB(tree1.right,tree2)
return r
print "---",hashB(A,A_)
相關文章
- 資料結構實驗六是否同一顆二叉樹資料結構二叉樹
- 建立一顆二叉樹,並求它的高度 7074二叉樹
- 【C++】判斷一顆二叉樹是否對稱C++二叉樹
- 從後端到前端之Vue(三)小結以及一顆真實的大樹後端前端Vue
- 二叉樹的子樹和子結構 c++二叉樹C++
- 如何用樹莓派搭建一個顆粒物感測器樹莓派
- [資料結構] BFS演算法實現層序遍歷輸出一顆二叉樹資料結構演算法二叉樹
- 如何使用樹莓派測定顆粒物(PM 2.5)樹莓派
- 【演算法】輸入一顆二元查詢樹,將該樹轉換為它的映象演算法
- 由中序序列和先序序列確定一顆二叉樹二叉樹
- 二叉樹的子結構二叉樹
- 【劍指offer】樹的子結構
- Leetcode-572: 另一個樹的子樹( leetcode100:相同的樹 )LeetCode
- 程式設計師的聖誕節--送她一顆聖誕樹(附原始碼)程式設計師原始碼
- 程式設計師的聖誕節–送她一顆聖誕樹(附原始碼)程式設計師原始碼
- 12顆小球,有一顆質量不一樣的面試題面試題
- JZ-017-樹的子結構
- 二叉樹的子結構、深度以及重建二叉樹二叉樹
- 劍指offer-17:樹的子結構
- 劍指offer面試18 樹的子結構面試
- 一類子樹問題的總結
- Linux 下樹形結構的檢視Linux
- 【演算法】輸入一顆二元樹,從上往下按層列印樹的每個結點,同一層中按照從左往右的順序列印演算法
- 04在WindowsServer2008R2上面建立第二顆樹WindowsServer
- 樹的學習——樹的儲存結構
- 資料結構之樹( 線段樹,字典樹)資料結構
- 樹結構總結
- 樹形結構
- git & 樹結構Git
- 樹型結構
- 反轉連結串列、合併連結串列、樹的子結構
- 一個簡單的樹形結構
- PHP 陣列轉樹結構/樹結構轉陣列PHP陣列
- Zavain Dar:射向人工智慧的20顆子彈AI人工智慧
- 樹結構的應用
- 資料結構(樹):二叉樹資料結構二叉樹
- JavaScript 中一顆有毒的語法糖JavaScript
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹