首页 » 编程之美 » 正文

[leetcode_101]Symmetric Tree

之前看编程珠玑的时候,记得先要有想法,就好像 啊哈!灵机一动。
然后要有相应的很好的数据结构。
最后编码。
这是我的一个理解。
然后这个题,真心呵呵。
自从本蒟蒻知道了二叉树序列化之后,就各种用。然后在这儿就用不停的Wa,190个测试数据
188个通过。
蛋疼。
憋了一天,忍不住了,看别人的想法,哎哟我去!这么点代码,蛋疼。
其实就是递归。只是递归的时候注意技巧,原则就是镜像。
附上代码。修改思路之后,一次AC。

class Solution {
public:
    bool isSymmetric(TreeNode *root) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        if(root == NULL)
            return true;
        return CheckEqual(root->left,root->right);
    }
    bool CheckEqual(TreeNode * left,TreeNode * right)
    {<br />
        if(left == NULL &amp;amp;amp;&amp;amp;amp; right == NULL)
            return true;
        if((left == NULL &amp;amp;amp;&amp;amp;amp; right != NULL)||(left != NULL &amp;amp;amp;&amp;amp;amp; right == NULL))
            return false;
        if(left-&amp;amp;gt;val != right -&amp;amp;gt;val)
            return false;
        return CheckEqual(left-&amp;amp;gt;left,right-&amp;amp;gt;right)&amp;amp;amp;&amp;amp;amp;CheckEqual(left-&amp;amp;gt;right,right-&amp;amp;gt;left);
    }
};

发表评论