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

2024-03-13 1212阅读

温馨提示:这篇文章已超过379天没有更新,请注意相关的内容是否还可用!

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

文章目录

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

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

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

        力扣爆刷第90天之hot100五连刷36-40
        (图片来源网络,侵删)

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

        class Solution {
            List list = new ArrayList();
            public List 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即本节点,返回。

        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

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

        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

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

        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

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

        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;
            }
            
        }
        
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]