永嘉哪里有做网站,网站 导出链接,编程培训机构加盟怎样,移动官网网站建设#x1f381;个人主页#xff1a;我们的五年
#x1f50d;系列专栏#xff1a;初阶初阶结构刷题
#x1f389;欢迎大家点赞#x1f44d;评论#x1f4dd;收藏⭐文章 1.问题描述#xff1a;
2.问题分析#xff1a;
二叉树是区分结构的#xff0c;即左右子树是不一…个人主页我们的五年
系列专栏初阶初阶结构刷题
欢迎大家点赞评论收藏⭐文章 1.问题描述
2.问题分析
二叉树是区分结构的即左右子树是不一样的。本题还是采用分治的思想要让两棵子树相等只要让根相等左子树相等右子树相等就可以了。 力扣官方给的函数模型 bool isSameTree(struct TreeNode* p, struct TreeNode* q) { } 能往下走的条件是根一样。能往下走的条件我们不管要管的是不能往下走的时候之间返回false。 if(p-val!q-val) return false 最小子问题是根都一样q和p要么都为空要么有一个为空。 走到有一颗子树的根为NULL就进行判断。 /*** 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(pNULLqNULL){return true;}if(pNULL||qNULL){return false;}if(p-val!q-val)return false;return isSameTree(p-left,q-left)isSameTree(p-right,q-right);
} if(pNULLqNULL) { return true; } if(pNULL||qNULL) { return false; } 这两个是最小子问题的时候进行返回即有一个都为NULL了另外一个要是还不是空两边就不相等了。 if(p-val!q-val) return false; 根都不相等了直接返回。所以返回的条件有三个根相等子树相等子树不相等。但是只有都走到NULL才是返回true。 左边相等右边相等就返回true。 return isSameTree(p-left,q-left)isSameTree(p-right,q-right);