Symmetric Tree

来源:互联网 发布:手机转区软件 编辑:程序博客网 时间:2024/05/29 16:52

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

This problem can be solve by using a simple recursion. The key is finding the conditions that return false, such as value is not equal, only one node(left or right) has value.

/** * 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 helper(TreeNode* l, TreeNode* r)    {        if(l == NULL && r == NULL)        {            return true;        }        if(l != NULL && r != NULL)        {            if(l -> val != r -> val)            {                return false;            }            return helper(l -> left, r -> right) && helper(l -> right , r -> left);        }else        {            return false;        }    }    bool isSymmetric(TreeNode* root)    {        if(root == NULL)        {            return true;        }            return helper(root -> left, root -> right);    }};


0 0
原创粉丝点击