Given two binary trees, write a function to check if they are the same.
Two trees are considered identical if they are structurally identical and the nodes have identical values.
Example 1:
Input: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] output: true
Example 2:
Input: 1 1 / \ 2 2 [1,2], [1,null,2] output: false
Example 3:
Input: 1 1 / \ / \ 2 1 1 2 [1,2,1], [1,1,2] Output: false
Ideas:
1. When both nodes are null, the nodes are equal
2. When both nodes are not null
1. The values of the nodes are equal, indicating that the current nodes are equal, and then judge the current Whether the child nodes of the node are equal
2. The values of the nodes are not equal, return false
3. Only one node is null, the two nodes must not want to wait, return false
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 bool isSameTree(TreeNode* p, TreeNode* q) { 13 if(q == NULL && p == NULL) return true; 14 if(q != NULL && p!= NULL){ 15 if(q->val != p->val) return false; 16 else return isSameTree(p->left, q->left) && isSameTree(p->right, q->right); 17 } else return false; 18 } 19 };