判斷一棵樹tree2是不是另一棵樹tree1的子結構,空樹不是任意乙個樹的子結構。
需要進行的判斷:
1.都不是none,判斷val,再進一步判斷(左右進一步看val,或者左右重新判斷)
2.tree1是空而tree2非空 ,return false
3.tree2已是空,return true
4.一開始就遇到空節點val==none:不論是tree1還是tree2 return false。
classtreenode:def__init__(self,value=none):
self.val=value
self.left=noneself.right=nonedefsolution(tree1,tree2):
iftree1andtree2:#判斷1:都不是none,判斷val,再進一步判斷(左右進一步看val,或者左右重新判斷)
iftree1.val==none ortree2.val==none:#判斷4:遇到空節點,tree1 為空,tree2不可能是它的子樹;tree2為空,空樹不是任何樹的子樹
return falseiftree1.val==tree2.val:
returnsolution(tree1.left,tree2.left)andsolution(tree1.right,tree2.right)
else:
returnsolution(tree1.left,tree2)orsolution(tree1.right,tree2)
if nottree1andtree2:#判斷2:tree1是空而tree2非空 ,return false
return falsereturn true#判斷3:tree2已是空,return true
defmain():
#建立tree1
node1=treenode(1)
node2=treenode(2)
node3=treenode(3)
node4=treenode(4)
node5=treenode(5)
node6=treenode(6)
node1.left=node2
node1.right=node3
node3.right = node6
node2.left = node4
node2.right = node5
# 建立tree2
node7=treenode(2)
node8=treenode(5)
node7.right = node8
#建立tree3
node9=treenode(3)
node10=treenode(7)
node9.left=node10
#建立空樹tree4
node11=treenode()
print(solution(node1,node7))
print(solution(node1,node9))
print(solution(node1,node11))
if__name__=='__main__':
main()
true
false
false
true false none都是大寫開頭
劍指offer全套解答 劍指offer 1 5
1.二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution int n array 0 length i...
劍指offer全套解答 劍指offer 36 45
36.兩個鍊錶的第乙個公共節點 輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 public class solution return p 37.數字在排序陣列 現的次數 統計乙個數字在公升序陣列 現的次數。publi...
劍指offer全套解答 劍指offer 46 55
46.孩子們的遊戲 圓圈中最後剩下的數 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。hf作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的 首先,讓小朋友們圍成乙個大圈。然後,他隨機指定乙個數m,讓編號為0的小朋友開始報數。每次喊到m 1的那個小朋友要出...