1. Topics
Given binary trees, write a function to check if they is equal or not.
The binary trees is considered equal if they is structurally identical and the nodes has the same value.
2. Solution 1
Class Solution {Public:bool Issametree (TreeNode *p, TreeNode *q) {if (!p &&!q) return true; else if (!p && q) return false; else if (P &&!q) return false; else {if (p->val! = Q->val) return false; else {queue<treenode*> LQ; Queue<treenode*> RQ; Lq.push (P); Rq.push (q); while (!lq.empty () &&!rq.empty ()) {treenode* Lfront = Lq.front (); treenode* Rfront = Rq.front (); Lq.pop (); Rq.pop (); if (!lfront->left &&!rfront->left);//null else if (!lfront->le FT && Rfront->left) return false; else if (Lfront->left &&!rfront-≫left) return false; else {if (lfront->left->val! = rfront->left->val) return false; else {Lq.push (lfront->left); Rq.push (Rfront->left); }} if (!lfront->right &&!rfront->right);//Nu ll else if (!lfront->right && rfront->right) return false; else if (lfront->right &&!rfront->right) return false; else {if (lfront->right->val! = rfront->right->val) return false; else {Lq.push (lfront->right); Rq.push (Rfront->right); }}} return true; } } }};
ideas: Very simple, breadth traversal can be judged more cumbersome, to the left and right node values are the same.
3. Solution 2
Class Solution {public: bool Issametree (TreeNode *p, TreeNode *q) { if (p = = NULL && q = = null) return true; else if (p = = NULL | | q = NULL) return False;bool islefttreesame = Issametree (P->left, q->left); bool Isrighttreesame = Issametree (p->right,q->right); return p->val = = Q->val && islefttreesame && isrighttreesame; }};
Idea: or recursion, relatively slow.
http://www.waitingfy.com/archives/1588
Leetcode same Tree