本文主要是介绍101. Symmetric Tree 面试题28. 对称的二叉树(Leetcode每日一题-2020.05.31),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
Example1
For example, this binary tree [1,2,2,3,4,4,3] is symmetric:
Example2
But the following [1,2,2,null,3,null,3] is not:
Solution
从上面的对比,可以看到,我们可以假设有两棵树t和它的镜像t1。
如果t是对称的,那么t和其镜像t1叠在一起后,应该是完全重叠的。
也就是说,t的左子树与t1的右子树相同,右子树与左子树相同。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool isSymmetric(TreeNode* root) {if(!root || (!root->left && !root->right))return true; return isSymmetricHelper(root,root);}bool isSymmetricHelper(TreeNode* root1,TreeNode* root2){if(!root1 && !root2)return true;if((root1 && !root2) || (!root1 && root2))return false;if(root1->val != root2->val)return false;return isSymmetricHelper(root1->left,root2->right) && isSymmetricHelper(root1->right,root2->left);}
};
这篇关于101. Symmetric Tree 面试题28. 对称的二叉树(Leetcode每日一题-2020.05.31)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!