Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
判断一棵树是否为镜像对称的。
我的做法是:
把左子树按“根左右”的顺序遍历一遍,把沿途的数值记录下来(空值记为特殊符号'a')。
把右子树按“根右左”的顺序遍历一遍,把沿途的数值记录下来(空值记为特殊符号'a')。
看两个字符串相不相等。
class Solution {
public:
bool isSymmetric(TreeNode *root) {
string leftFirst = "";
string rightFirst = "";
LRtraversal(root,leftFirst);
RLtraversal(root,rightFirst);
return leftFirst == rightFirst;
}
private:
void LRtraversal(TreeNode *root, string& seq) {
if(root==NULL) {
seq+='a';
return;
}
seq += root->val + '0';
LRtraversal(root->left, seq);
LRtraversal(root->right, seq);
}
void RLtraversal(TreeNode *root, string& seq) {
if(root==NULL) {
seq+='a';
return;
}
seq += root->val + '0';
RLtraversal(root->right, seq);
RLtraversal(root->left, seq);
}
};
本文介绍了一种方法来判断给定的二叉树是否为镜像对称,通过遍历并比较左子树和右子树的路径。
286

被折叠的 条评论
为什么被折叠?



