LeetCode(100)Same Tree
阿新 • • 發佈:2019-01-10
現在開始按照AC率降序刷題,接下來的這幾道題目確實都是挺簡單的。
題目如下:
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
分析如下:
簡單題,判斷兩棵樹是否是一樣的。遞迴判斷。
class Solution { public: bool isSameTree(TreeNode *p, TreeNode *q) { if(p==NULL&&q==NULL) return true; else if(p==NULL&&q!=NULL) return false; else if(p!=NULL&&q==NULL) return false; else if(p!=NULL&&q!=NULL&&p->val!=q->val) return false; else return (isSameTree(p->left,q->left))&&(isSameTree(p->right,q->right)); } };
updated: 2014-10-06
上面的條件判斷太不夠簡潔。判斷same tree false的case比較多,但是判斷same tree true的case 比較少,所以修改版以same tree true的條件為基準來寫,不滿足這個條件的則必然為false.
class Solution { public: bool isSameTree(TreeNode *p, TreeNode *q) { return (p == NULL && q == NULL) || ((p != NULL && q != NULL && p->val == q->val) && (isSameTree(p->left, q->left) && isSameTree(p->right, q->right))); } };