• 剑指offer面试题28:对称的二叉树


    #试题28:对称的二叉树

    题目:

    请设计一个函数判断一棵二叉树是否 轴对称

    示例 1:

    img

    输入:root = [6,7,7,8,9,9,8]
    输出:true
    解释:从图中可看出树是轴对称的。
    
    • 1
    • 2
    • 3

    示例 2:

    img

    输入:root = [1,2,2,null,3,null,3]
    输出:false
    解释:从图中可看出最后一层的节点不对称。
    
    • 1
    • 2
    • 3

    思路:

    1.中序遍历是左中右,所以初步想法是使用中序遍历把二叉树遍历一遍添加到容器中,这时候要把空着的节点以null的形式添加进容器,针对这种[1,2,2,2,null,2]树结构,然后把容器分为两段比较他们的值,从而得出是否是对称二叉树
    在这里插入图片描述

    2.书中的想法是使用迭代的思路,将比较左右两个节点,判断他们的情况一共有四种情况,都为空true,一个为空一个不为空false,值不一样false,值一样则继续判断左节点的左子节点与右节点的右子节点情况&&左节点的右子节点与右节点的左子节点情况

    代码:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
    public:
        bool check(TreeNode* root_left,TreeNode* root_right){
            if(root_left==nullptr&&root_right==nullptr)
                return true;
    
            if(root_left==nullptr || root_right==nullptr)
                return false;
    
            if(root_left->val!=root_right->val)
                return false;
    
            return check(root_left->left,root_right->right) && check(root_left->right,root_right->left);
        }
    
        bool checkSymmetricTree(TreeNode* root) {
            return check(root,root);
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    leetcode101题

    考点:

    1. 考察对二叉树的理解,实质上是利用树的遍历算法解决问题。
    2. 考察思维能力,树的对称是一个抽象的概念,需要微秒在短时间内清楚判断对称的步骤并转化为代码
  • 相关阅读:
    这几款文档笔记工具,你习惯用哪个?
    Pytorch框架的学习(2)
    剑指 Offer 12. 矩阵中的路径
    k8s---基本架构--节点
    醛肽:Gly-Phe-Gly-aldehyde、102579-48-6
    Node.js | 基础完结、综合训练 —— 路由应用实战教程
    MySQL操作合集
    1026 程序运行时间(JAVA)
    操作系统中的重要角色--内存管理
    房屋信贷违约风险竞争(kaggle)系列2-数据清理和格式化
  • 原文地址:https://blog.csdn.net/weixin_44269804/article/details/136405117