这两天刷了两道力扣的数据结构题,题目很简单但是还是不太习惯,开个帖子记录一下
题目一,相同的树:https://leetcode.cn/problems/same-tree/
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(p == nullptr && q == nullptr){
return true;
}else if(p == nullptr || q == nullptr){
return false;
}else if(p -> val != q -> val){
return false;
}else{
return isSameTree(p -> left , q -> left ) && isSameTree( p -> right , q -> right);
}
}
};
题目二,对称二叉树:https://leetcode.cn/problems/symmetric-tree/
class Solution {
public:
bool check(TreeNode* p , TreeNode* q){
if(p == nullptr && q == nullptr){
return true;
}else if(p == nullptr || q == nullptr){
return false;
}else{
return p->val == q->val && check(p->left , q->right) && check(p -> right , q -> left);
}
}
bool isSymmetric(TreeNode* root) {
return check(root , root);
}
};
这两道题都是使用递归的方法去判断树的问题,这里要注意递归的停止条件和几种特殊情况的判断。