✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
🌟🌟 追风赶月莫停留 🌟🌟
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
🌟🌟 平芜尽处是春山🌟🌟
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
✏️单值二叉树
class Solution {
public:
bool isUnivalTree(TreeNode* root)
{
if (root == NULL)
return true ;
if (root->left != NULL && root->val != root->left->val)
return false ;
if (root->right != NULL && root->val != root->right->val)
return false ;
return isUnivalTree(root->left)
&& isUnivalTree(root->right) ;
}
};
本题写法中,我们主要利用递归的思想和等号的性质从反向入手,也就是说只要有不相等就返回false。
上面说的等号的性质就是a=b,b=c那么a就一定等于c了。
如果从正向入手就有点麻烦,你判断了他们相等还要一个个的递归。大家可以去试一试。
当然还有一个最终要的条件判断,比较是在左子树和右子树都存在的情况下,如果不存在就不用比较,所以我在比较前都加了一个判断,判断root->left和root->right都存在,才去比较。
✏️相同的树
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q)
{
//两个都为空
if (p == NULL && q == NULL)
return true ;
//其中一个为空
if (p ==