关关的刷题日记57 – Leetcode 101. Symmetric Tree
题目的意思是判断一棵树是否是镜像的,此处镜像指的是中心对称的树。
思路:一棵树如果是镜像的,那么它的左右节点就得是镜像的。左右节点是镜像的,那么左节点的左子树和右节点的右子树必须得是镜像的,左节点的右子树和右节点的左子树必须得是镜像的,后面两对节点是否是镜像的判断方式和判断左右节点是否是镜像的判断方式一样,因此采用递归的方法。
class Solution {public:
bool dfs(TreeNode* root1, TreeNode* root2)
{
if(!root1 && !root2)
return true;
if(!root2 || !root1 || root1->val!=root2->val)
return false;
return dfs(root1->left, root2->right) && dfs(root1->right, root2->left);
}
bool isSymmetric(TreeNode* root) {
if(!root)
return true;
else
return dfs(root->left, root->right);}};
人生易老,唯有陪伴最长情,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。