leetcode【相同的樹】
阿新 • • 發佈:2021-02-17
技術標籤:#刷題筆記
題目描述:
給你兩棵二叉樹的根節點 p 和 q ,編寫一個函式來檢驗這兩棵樹是否相同。
如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
測試用例:
輸入:p = [1,2,3], q = [1,2,3]
輸出:true
思路:
- 如果p,q均為null,直接返回true;
- 如果p,q有一棵樹為null,直接返回false;
- 如果p,q的根節點的值不同,直接返回false;
- 遞迴遍歷p,q的左右子樹,依次判斷是否相同;
程式碼如下:
class TreeNode{
int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val) {
this.val = val;
}
public TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
//如果p,q均為null,直接返回true
if (p == null && q == null){
return true;
}
//如果p,q其中有一棵樹為Null,直接返回false
if (p == null || q == null){
return false;
}
//p,q根節點值不相同則返回false
if (p.val != q.val){
return false;
}
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
}