zoukankan      html  css  js  c++  java
  • 剑指OFFER_对称的二叉树

    剑指OFFER_对称的二叉树

    题目描述

    请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

    思路

    我的想法就是设计一个递归函数,接收两个结点,判断两个节点是否同时存在或同时不存在,如果同时存在则判断保存的值是否相等,都满足则进入下一层,不满足直接返回false;

    整个递归一旦有一个false则直接退出,每次放入两个对称的节点即可是的每次的判断都是对称的;

    很快完成了代码设计,不过一开始忘了考虑特殊情况,就是根节点为空的情况,猜到问题后加上一句判断即可:

    代码

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    */
    class Solution {
    public:
        bool compare(TreeNode* l, TreeNode* r) {
            if (!l && !r) return true;
            if (!l || !r) return false;
            if (l->val != r->val) return false;
            return (compare(l->left, r->right) && compare(l->right, r->left));
        }
        bool isSymmetrical(TreeNode* pRoot) {
            if (!pRoot) return true;
            return compare(pRoot->left, pRoot->right);
        }
    
    };
    
  • 相关阅读:
    TabControl添加关闭按钮
    C# 遍历窗体上控件方法
    个人JS脚本验证大全[转]
    c# 窗体位置任意调
    Sql存储过程解密算法 破解微软的加密算法
    网页居中
    兼容IE和Firefox的设为首页和收藏的Javascript代码
    定义类成员
    HikariCP
    post请求重定向到get请求问题
  • 原文地址:https://www.cnblogs.com/sakurapiggy/p/13258215.html
Copyright © 2011-2022 走看看