[Leetcode]Symmetric Tree

来源:互联网 发布:如何做一个网络写手 编辑:程序博客网 时间:2024/04/29 00:48

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);    }};

0 0
原创粉丝点击