100. Same Tree
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.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
题解:
本题是关于树和DFS的题目,要求判断两棵树是否完全相同。
我的思路是循环递归调用isSameTree函数。递归基是当两个节点中至少有一个为空时,如果两个节点都为空则返回true,如果只有一个为空则返回false。在递归的过程中,如果递归到两个节点的值不一样则返回false,否则继续进行递归。
代码:
/**
* 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) || (p != NULL && q == NULL))
return false;
else if (p == NULL && q == NULL)
return true;
else
{
if (p->val != q->val)
return false;
else
{
bool a = isSameTree(p->left, q->left);
bool b = isSameTree(p->right, q->right);
if (a && b)
return true;
else
return false;
}
}
}
};