力扣爆刷第90天之hot100五连刷36-40

力扣爆刷第90天之hot100五连刷36-40

文章目录

      • 力扣爆刷第90天之hot100五连刷36-40
      • [一、94. 二叉树的中序遍历](#一、94. 二叉树的中序遍历)
      • [二、104. 二叉树的最大深度](#二、104. 二叉树的最大深度)
      • [三、26. 翻转二叉树](#三、26. 翻转二叉树)
      • [四、101. 对称二叉树](#四、101. 对称二叉树)
      • [五、543. 二叉树的直径](#五、543. 二叉树的直径)

一、94. 二叉树的中序遍历

题目链接:https://leetcode.cn/problems/binary-tree-inorder-traversal/description/?envType=study-plan-v2\&envId=top-100-liked

思路:最简单的中序遍历,无需多说。

java 复制代码
class Solution {
    List<Integer> list = new ArrayList<>();
    public List<Integer> inorderTraversal(TreeNode root) {
        order(root);
        return list;
    }
    void order(TreeNode root) {
        if(root == null) {
            return ;
        }
        order(root.left);
        list.add(root.val);
        order(root.right);
    }
}

二、104. 二叉树的最大深度

题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/?envType=study-plan-v2\&envId=top-100-liked

思路:后续遍历到根节点,选取左右子树的结果中的最大值作为子树深度,然后加1即本节点,返回。

java 复制代码
class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) {
            return 0;
        }
        int left = maxDepth(root.left);
        int right = maxDepth(root.right);
        return Math.max(left, right) + 1;
    }
}

三、26. 翻转二叉树

题目链接:https://leetcode.cn/problems/invert-binary-tree/description/?envType=study-plan-v2\&envId=top-100-liked

思路:前序遍历,然后逐个交换节点左右子树即可。

java 复制代码
class Solution {
    public TreeNode invertTree(TreeNode root) {
        order(root);
        return root;
    }
    void order(TreeNode root) {
        if(root == null) return ;
        TreeNode t = root.left;
        root.left = root.right;
        root.right = t;
        order(root.left);
        order(root.right);
    }

}

四、101. 对称二叉树

题目链接:https://leetcode.cn/problems/symmetric-tree/description/?envType=study-plan-v2\&envId=top-100-liked

思路:判断是否是对称二叉树,直接把根节点的左右子树,作为一颗树进行遍历。

java 复制代码
class Solution {
    public boolean isSymmetric(TreeNode root) {
        return isEquels(root.left, root.right);
    }
    boolean isEquels(TreeNode child1, TreeNode child2) {
        if(child1 == null && child2 == null) return true;
        if((child1 == null && child2 != null) || (child1 != null && child2 == null)) return false;
        if(child1.val != child2.val) return false;
        return isEquels(child1.left, child2.right) && isEquels(child1.right, child2.left);
    }
}

五、543. 二叉树的直径

题目链接:https://leetcode.cn/problems/diameter-of-binary-tree/description/?envType=study-plan-v2\&envId=top-100-liked

思路:其实求的就是任意一个节点其左右子树能够连接的最长边长,那么问题就转化为求每个节点左子树的最长路径和右子树的最长路径和。

java 复制代码
class Solution {
  
    int max = 0;
    public int diameterOfBinaryTree(TreeNode root) {
       order(root);
       return max;
    }
    
    int order(TreeNode root) {
        if(root == null) return 0;
        int left = order(root.left);
        int right = order(root.right);
        max = Math.max(max, left + right);
        return Math.max(left, right) + 1;
    }

    
}
相关推荐
star数模9 分钟前
2024“华为杯”中国研究生数学建模竞赛(E题)深度剖析_数学建模完整过程+详细思路+代码全解析
python·算法·数学建模
Tak1Na12 分钟前
2024.9.19
算法
sjsjs1131 分钟前
【数据结构-扫描线】力扣57. 插入区间
数据结构·算法·leetcode
王哈哈嘻嘻噜噜33 分钟前
数据结构中线性表的定义和特点
数据结构·算法
一杯茶一道题1 小时前
LeetCode 260. 只出现一次的数字 III
算法·leetcode
MogulNemenis1 小时前
力扣415周赛
java·数据结构·算法·leetcode
Rense11 小时前
常用的基于无线射频( UWB)室内定位技术的原理与算法
算法
zzhnwpu1 小时前
代码随想录算法训练营第三七天| 动态规划:完全背包理论基础 518.零钱兑换II 377. 组合总和 Ⅳ 322. 零钱兑换
算法·leetcode·动态规划
一道秘制的小菜1 小时前
C++第十一节课 new和delete
开发语言·数据结构·c++·学习·算法
学不会lostfound1 小时前
一、机器学习算法与实践_03概率论与贝叶斯算法笔记
算法·机器学习·概率论·高斯贝叶斯