您的位置:首页 > 其它

[Leetcode]Symmetric Tree

2015-03-30 23:22 225 查看
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);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: