首页 > 其他 > 详细

[Leetcode]Symmetric Tree

时间:2014-10-28 08:07:20      阅读:205      评论:0      收藏:0      [点我收藏+]

   开始做算法题了,从AC率最高的开始做,思路一开始就找到了要用递归,但是细节上有很多需要修炼的,基础还是要打牢固。要判断是否镜像对称,只需要每次判断根节点的左子节点的左、右儿子是否相对应的等于右子节点的右、左儿子,然后递归调用isNodeSymmetric()即可。附上解法:

/**

 * Definition for binary tree

 * 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;

        else if(root->left==NULL&&root->right==NULL)return true;

        else return isNodeSymmetric(root->left,root->right);

    }

    bool isNodeSymmetric(TreeNode *left,TreeNode *right)

    {

        if(left==NULL&&right==NULL)return true;

        if((left == NULL && right != NULL) || (left != NULL && right == NULL) ) return false;

        else if(left->val!=right->val)return false;

        else return isNodeSymmetric(left->left,right->right)&& isNodeSymmetric(left->right,right->left);

        

    }

          

};

 

[Leetcode]Symmetric Tree

原文:http://www.cnblogs.com/sofeii/p/4055701.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!