zoukankan      html  css  js  c++  java
  • 【leetcode】Symmetric Tree

    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

    思路:判断树是否是对称的 递归判断即可

    class Solution {
    public:
        bool isSymmetric(TreeNode* root) {
            if(NULL == root)   return true;
    
            TreeNode * L = root->left;
            TreeNode * R = root->right;
            return isSymmetricPart(L, R);
        }
    
         bool isSymmetricPart(TreeNode* L, TreeNode* R)
         {
             if(NULL == L && NULL == R) return true;
             if(NULL == L && NULL != R || NULL == R && NULL != L) return false;
             if(L->val == R->val)
                 return isSymmetricPart(L->left, R->right) && isSymmetricPart(L->right, R->left);
             else
                 return false;
             
         }
    };

    更简短的写法

    class Solution {
    public:
        bool isSymmetric(TreeNode* root) {
            return !root ? true : isSymmetricHelper(root->left, root->right);
        }
    
        bool isSymmetricHelper(TreeNode* left, TreeNode* right) {
            if (!left && !right) { return true; }
            return 
                (left && right) &&
                (left->val == right->val) &&
                isSymmetricHelper(left->left, right->right) &&
                isSymmetricHelper(left->right, right->left);
        }
    };
  • 相关阅读:
    [转自大神]js拖拽小总结
    双飞翼布局
    圣杯布局
    页面伸缩布局实例
    css动画
    html的简单笔记01
    沙扬娜拉一首——赠日本女郎(徐志摩)
    滑动门功能
    边框圆角练习--跳动的心
    边框圆角
  • 原文地址:https://www.cnblogs.com/dplearning/p/4627307.html
Copyright © 2011-2022 走看看