• 剑指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. 考察思维能力,树的对称是一个抽象的概念,需要微秒在短时间内清楚判断对称的步骤并转化为代码
  • 相关阅读:
    工控行业各品牌程序扩展格式和软件
    基于改进螺旋更新位置模型的鲸鱼优化算法-附代码
    [计算机网络]-网络层-概述及虚电路和数据报网络
    SSH Keylogger密码抓取
    【算法】【二叉树模块】求一个二叉树“子树“是否包含另一个二叉树的全部拓扑结构
    linux 文件管理
    [Java安全]—再探Filter内存马
    【GO】基础速成
    引用 随笔
    5G将如何改变我们的生活和工作方式?
  • 原文地址:https://blog.csdn.net/weixin_44269804/article/details/136405117