题解 | #对称的二叉树#

对称的二叉树

http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

争取每一题都记录。
树很容易就想到递归,针对本题,对称的二叉树,左右对称,那么左右子树高度一致,且各个结点也是对称的。那么我们不妨用递归遍历。
确定递归截止条件:
左右结点大小不一样,左右结点一个是叶子结点,另一个不是。不到截止条件,递归继续。
代码:

class Solution {
private:
    int flag = 1;
public:
    bool isSymmetrical(TreeNode* pRoot) {
        if(!pRoot) return true;
        if(pRoot->left && pRoot->right)
            recur(pRoot->left,pRoot->right);
        if(flag == 1)
            return true;
        return false;
    }
    void recur(TreeNode* l, TreeNode* r){
        if(!l && !r) return;
        if(!l || !r){
            flag = 0;
            return;
        }
        if(l->val != r->val){
            flag = 0;
            return;
        }
        recur(l->left,r->right);
        recur(l->right,r->left);
        return;
    }
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务