版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wen_special/article/details/79196770
题目要求(判断两个二叉数是否相等。):
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.
思路:与二叉树相关的问题可以用递归的思路来解决,对于这个问题,先判断两棵树的当前节点的值是否相等,如果相等,再判断两棵树的左子树、右子树分别是否相等,当左右子树都相等时(逻辑和关系),可以判断两棵树相等。还要考虑空树的情况,也就是空指针的情况。代码如下。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
if(p == NULL || q == NULL){
return (p == q);
}else{
if(p->val != q->val){
return false;
}else{
return isSameTree(p->left, q->left)&&isSameTree(p->right, q->right);
}
}
}