Leetcode 100. 相同的樹 dfs
阿新 • • 發佈:2018-12-24
給定兩個二叉樹,編寫一個函式來檢驗它們是否相同。
如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
示例 1:
輸入: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
輸出: true
示例 2:
輸入: 1 1
/ \
2 2
[1,2], [1,null,2]
輸出: false
示例 3:
輸入: 1 1
/ \ / \
2 1 1 2
[1,2,1], [1,1,2]
輸出: false
此題只需要判斷兩個樹的左右子樹是否分別相同就行,不用考慮兩棵樹不同的子樹相同的情況(左右,右左);
C++:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { if(p==NULL&&q==NULL) return true; else if(p&&q&&p->val==q->val) return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right); else return false; } };
Java:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q==null) return true; else if(p!=null&&q!=null&&p.val==q.val) return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right); else return false; } }
吐槽一下, 相同的程式碼,C++100% ,Java才61% 。。 。。