leetcode101.SymmetricTree

来源:互联网 发布:java树形结构简单实现 编辑:程序博客网 时间:2024/06/05 21:08

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

Note:
Bonus points if you could solve it both recursively and iteratively.

解题思路:判断一棵树是不是一个对称的二叉树,在这里给出了两个思路。一种是递归,一种是进行迭代。

对两颗子树分别进行判断:

代码如下:

/** * 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 isSymmetric(TreeNode* root)     {        if (root==NULL)        return true;        return isSame(root.left,root.right);                      }    bool isSame(TreeNode * left1,TreeNode * right1)    {    if(left1==right1==NULL)    return true;    if(left1==NULL||right1==NULL)    return false;    if(left1->left!=right1->right)    return false;    bool isleft=isSame(left1->left1,right1->right);    bool isright=isSame(left1->right,right1->left);    retrun isleft&&isright;    }};


0 0
原创粉丝点击