給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。
示例 1:
給定的樹 s:
3/ \
4 5
/ \1 2
給定的樹 t:
4 / \
1 2
返回 true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。
示例 2:
給定的樹 s:
3/ \
4 5
/ \1 2/0
給定的樹 t:
4/ \
1 2
返回 false。
class
solution
//2.判斷以s為根節點的樹和以t為根節點的樹是否相同if(
issametree
(s,t)
)//遞迴的去s的左右子樹查詢
//3.判斷t是不是 以s.left為根節點的樹 的子樹if(
issubtree
(s.left,t)
)//4.判斷t是不是 以s.right為根節點的樹 的子樹if(
issubtree
(s.right,t)
)//遍歷完s整棵樹還沒找到相同的樹結構,返回false
return
false;}
//判斷是否是相同的樹
public
boolean
issametree
(treenode p, treenode q)
//兩個根節點中只有乙個為空
if(p == null || q== null)
if(p.val != q.val)
//走到此處,已經可以確定兩樹當前根節點都不為空,且值相等
//遞迴判斷左子樹和右子樹
return
issametree
(p.left,q.left)
&&issametree
(p.right,q.right);}
}
leetcode 另一棵樹的子樹
題目描述 給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹 s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。測試用例 給定的樹 s 給定的樹 t 返回 true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。思路 若...
如何判斷一棵樹是不是另一棵樹的子樹
package suanfatest class treenode treenode int value treenode int value,treenode leftchild,treenode rightchild public int getvalue public void setvalu...
判斷一棵樹是否是另一棵樹的子樹 java實現
這是乙個很經典的演算法題,聽起來好像挺難的,但是其實很簡單。我覺得我們接觸到的問題,並沒有難題,只有複雜不複雜。乙個再難的問題,也可以分解成乙個個簡單的問題,再將這些簡單的問題交給不同的人去做就構成了乙個專案。其實寫演算法也是這個思想。首先要判斷一棵樹是不是另一棵樹的子樹,我們只需遍歷一棵樹,用這個...