淘宝网站的建设目的是什么意思网络媒体
题目
https://leetcode.cn/problems/same-tree/submissions/603604199
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q);
示例 1:
输入:p = [1,2,3], q = [1,2,3]
输出:true
示例 2:
输入:p = [1,2], q = [1,null,2]
输出:false
示例 3:
输入:p = [1,2,1], q = [1,1,2]
输出:false
代码
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//都走到空if (p == NULL && q == NULL)return true;//其中一个为空if (p == NULL || q == NULL)return false;//都不为空//不写p->val==q->val,没有意义,当不同时就可以终止,相同就继续if (p->val != q->val)return false;//p、q的值相等,比较左右子树if (!isSameTree(p->left, q->left))return false;if (!isSameTree(p->right, q->right))return false;//都相等return true;
}
也可以写做:
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if (p == NULL && q == NULL)return true;if (p == NULL || q == NULL)return false;if (p->val != q->val)return false;return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}