• 【力客热题HOT100】-【040】101 对称二叉树


    重点:

    (1)递归:判断当前节点是否相等,再判断当前节点的左右子树对应是否相等;

    (2)迭代:队列实现层次遍历;

    101. 对称二叉树

    难度简单

    给你一个二叉树的根节点 root , 检查它是否轴对称。

    示例 1:

    输入:root = [1,2,2,3,4,4,3]
    输出:true
    

    示例 2:

    输入:root = [1,2,2,null,3,null,3]
    输出:false
    

    提示:

    • 树中节点数目在范围 [1, 1000] 内
    • -100 <= Node.val <= 100

    解析:

    判断对称。即判断根节点的左右子树,其每个节点是否相等,并且左子树的左节点是否等于右子树的右节点,左子树的右节点是否等于右子树的左节点。

    方法1:递归

    在每个dfs中,

    (1)判断当前节点是否相等,不等就直接返回false;

    (2)再判断左子树左节点和右子树右节点,左子树右节点和右子树左节点是否跟别相等

    方法2:迭代

    显然,我们这里应该使用层次遍历,所以定义队列queue为数据结构。那么根据对称性,将左右子树分别入队列,每蹭的节点顺序一个顺序一个逆序。

    代码:

    1. //递归
    2. class Solution {
    3. public:
    4. bool isSymmetric(TreeNode* root) {
    5. if(root!=nullptr)
    6. return dfs(root->left,root->right);
    7. return true;
    8. }
    9. bool dfs(TreeNode* root1,TreeNode* root2){
    10. if(root1==nullptr&&root2==nullptr)
    11. return true;
    12. if(root1==nullptr||root2==nullptr)
    13. return false;
    14. if(root1->val!=root2->val)
    15. return false;
    16. return dfs(root1->left,root2->right)&&dfs(root1->right,root2->left);
    17. }
    18. };
    1. //迭代
    2. class Solution {
    3. public:
    4. bool isSymmetric(TreeNode* root) {
    5. if(root!=nullptr)
    6. return bfs(root->left,root->right);
    7. return true;
    8. }
    9. bool bfs(TreeNode* u,TreeNode* v){
    10. queue que;
    11. que.push(u);
    12. que.push(v);
    13. while(!que.empty()){
    14. u=que.front();que.pop();
    15. v=que.front();que.pop();
    16. if(u==nullptr&&v==nullptr)
    17. continue;
    18. if(u==nullptr||v==nullptr)
    19. return false;
    20. if(u->val!=v->val)
    21. return false;
    22. que.push(u->left);que.push(v->right);
    23. que.push(u->right);que.push(v->left);
    24. }
    25. return true;
    26. }
    27. };
  • 相关阅读:
    史上最全的Python包管理工具:Anaconda教程
    前言技术 VScode + 其他插件-2
    Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(登录注册页面,验证码)
    后台管理---删除功能
    初学java懵了,这个异常是怎么产生的?
    2022高压电工操作证考试题库及模拟考试
    Java 操作 Excel:生成数据、设置单元格样式、设置数据有效性(hutool)
    AR 和 VR 的开源平台
    Qt学习总结之QSlider、QDial
    HTML本地离线缓存?
  • 原文地址:https://blog.csdn.net/zhuge2017302307/article/details/126035617