当前位置: 首页 > article >正文

刷题 二叉树

面试经典 150 题 - 二叉树

104. 二叉树的最大深度

在这里插入图片描述

广度优先遍历

class Solution {
public:
    // 广度优先遍历
    int maxDepth(TreeNode* root) {
        if (root == nullptr) return 0;
        queue<TreeNode*> que;
        que.push(root);
        int result = 0;
        while (!que.empty()) {
            ++result;
            int num = que.size();
            while (num--) {
                TreeNode* cur = que.front();
                que.pop();
                if (cur->left) que.push(cur->left);
                if (cur->right) que.push(cur->right);
            }
        }
        return result;
    }
};

递归

最大深度 = 1 + max(左子树最大深度, 右子树最大深度)

class Solution {
public:
    // 递归:最大深度 = 1 + max(左子树最大深度, 右子树最大深度)
    int maxDepth(TreeNode* root) {
        if (root == nullptr) return 0;
        return 1 + max(maxDepth(root->left), maxDepth(root->right));
    }
};

100. 相同的树

在这里插入图片描述

递归

树相同 --> 根节点相同 + 左子树相同 + 右子树相同

class Solution {
public:
    // 递归
    // 树相同 --> 根节点相同 + 左子树相同 + 右子树相同
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if (p == nullptr && q == nullptr) {
            return true;
        } else if (p == nullptr || q == nullptr) {
            return false;
        }
        if (p->val != q->val) {
            return false;
        }
        if (isSameTree(p->left, q->left) == false) {
            return false;
        }
        if (isSameTree(p->right, q->right) == false) {
            return false;
        }
        return true;
    }
};

226. 翻转二叉树

在这里插入图片描述

递归

class Solution {
public:
    // 翻转二叉树 --> 
    // 根节点的左子树 = 将右子树进行反转
    // 根节点的右子树 = 将左子树进行反转
    TreeNode *invertTree(TreeNode *root) {
        if (root == nullptr) return nullptr;
        auto left = invertTree(root->left); // 翻转左子树
        auto right = invertTree(root->right); // 翻转右子树
        root->left = right; // 交换左右儿子
        root->right = left;
        return root;
    }
};

http://www.kler.cn/news/337715.html

相关文章:

  • Liunx各系统中间件查询脚本
  • 大厂面试真题-说说synchronized的锁升级过程
  • leetcode 刷题day36动态规划Part05 背包问题(完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶))
  • typescript使用webpack打包编译问题
  • 35.搜索插入位置
  • MATLAB工具库:数据统计分析工具MvCAT、MhAST等
  • 1.4TB! 全台湾2024年三维建筑模型3DTiles数据
  • 知识图谱入门——11:构建动态图谱渲染应用:Vue3与Neo4j的集成与实践
  • STM32-HAL库驱动DHT11温湿度传感器 --2024.9.28
  • Docker_速通_01
  • 停车场停车位检测数据集2166张 违停 带标注 voc yolo 2类
  • LLM大模型的必备入门书:吴恩达大佬 LLM CookBook+AI产品经理必看 《AI重新定义产品经理》
  • 深入理解Web浏览器与服务器的连接过程
  • 期权懂|00后期权新手看过来:如何在期权中交易呢?
  • 性能测试学习2:常见的性能测试策略(基准测试/负载测试/稳定性测试/压力测试/并发测试)
  • Spring入门
  • Kubernetes资源详解
  • 浅谈人工智能之大模型的流式调用:Java 后端实践
  • 台球助教小程序开发搭建/桌球助教到店软件
  • Axios 快速入门