题目描述
题目来源:相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
解题思路:
判断两棵二叉树是否相同,也可以将其分解为子问题:
1.比较两棵树的根是否相同。
2.比较两根的左子树是否相同。
3.比较两根的右子树是否相同。
代码解决:
/** * 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 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); }
结果与总结:
通过所有示例,问题得到解决。
总结:本题题目简单,其主要解决方法采取递归的方式来解决,利用递归前要判定几种特殊情况。