100. Same Tree
题目描述:
Given two binary trees, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identical and the nodes have the same value.
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
Note:
题目翻译
给定两个二叉树,编写一个函数来检查它们是否相同。 如果结构相同且节点具有相同的值,那么两个二叉树被认为是相同的。
示例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
注意:
解题方案
标签: Tree
思路:
- 思路非常简单,我们对树进行遍历
- 每层判断是否相等,然后在下一层
- 当一方为空时,若另一方相等则相同,若不相等,则不相同
代码:
/**
* 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 (p == q);
return (p->val == q->val && isSameTree(p->left, q->left) && isSameTree(p->right, q->right));
}
};
参考资料
- 作者:段静