代码随想三刷二叉树篇2

news/2024/7/3 0:10:12

代码随想三刷二叉树篇2

  • 101. 对称二叉树
    • 题目
    • 代码
  • 104. 二叉树的最大深度
    • 题目
    • 代码
  • 111. 二叉树的最小深度
    • 题目
    • 代码
  • 222. 完全二叉树的节点个数
    • 题目
    • 代码
  • 110. 平衡二叉树
    • 题目
    • 代码
  • 257. 二叉树的所有路径
    • 题目
    • 代码

101. 对称二叉树

题目

链接

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root==null){
            return true;
        }   
        return traverse(root.left,root.right);
    }

    public boolean traverse(TreeNode left,TreeNode right){
        if(left==null&&right==null){
            return true;
        }
        if(left==null||right==null){
            return false;
        }
        if(left.val!=right.val){
            return false;
        }
        return traverse(left.left,right.right)&&traverse(left.right,right.left);
    }
}

104. 二叉树的最大深度

题目

链接

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {

    public int maxDepth(TreeNode root) {
        findDepth(root,1);
        return maxDepth;
    }
    int maxDepth = 0;
    public void findDepth(TreeNode root,int depth){
        if(root==null){
            return;
        }
        maxDepth = Math.max(maxDepth,depth);
        findDepth(root.left,depth+1);
        findDepth(root.right,depth+1);
    }
}

111. 二叉树的最小深度

题目

链接

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
        if(root==null){
            return 0;
        }
        traverse(root,1);
        return min;
    }   
    int min = Integer.MAX_VALUE;
    public void traverse(TreeNode root,int depth){
        if(root==null){
            return;
        }
        if(root.left==null&&root.right==null){
            min = Math.min(min,depth);
        }
        traverse(root.left,depth+1);
        traverse(root.right,depth+1);
    }
}

222. 完全二叉树的节点个数

题目

链接

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int countNodes(TreeNode root) {
        preOrder(root);
        return count;
    }

    int count = 0;
    public void preOrder(TreeNode root){
        if(root==null){
            return;
        }
        count++;
        preOrder(root.left);
        preOrder(root.right);
    }
}

110. 平衡二叉树

题目

链接

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isBalanced(TreeNode root) {
        if(root==null){
            return true;
        }
        high(root);
        return isBalanced;
    }
    boolean isBalanced = true;
    public int high(TreeNode root){
        if(root==null){
            return 0;
        }
        if(root.left==null&&root.right==null){//叶子高为1
            return 1;
        }

        int left = high(root.left);
        int right = high(root.right);
        if(Math.abs(left-right)>1){
            isBalanced = false;
        }

        return Math.max(left,right)+1;
    }
}

257. 二叉树的所有路径

题目

链接

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<String> binaryTreePaths(TreeNode root) {
        preOrder(root);
        return result;
    }

    List<String> result = new ArrayList();
    List<Integer> list = new ArrayList();
    public void preOrder(TreeNode root){
        if(root==null){
            return;
        }
        list.add(root.val);
        if(root.left==null&&root.right==null){
            StringBuilder sb = new StringBuilder();
            for(int i =0;i<list.size();i++){
                if(i==0){
                    sb.append(list.get(i));
                }else{
                    sb.append("->"+list.get(i));
                }
            }
            result.add(sb.toString());
        }

        if(root.left!=null){
            preOrder(root.left);
            list.remove(list.size()-1);
        }
        if(root.right!=null){
            preOrder(root.right);
            list.remove(list.size()-1);
        }
        
    }
}

http://lihuaxi.xjx100.cn/news/2220558.html

相关文章

安装,管理程序

文章目录 Linuxd应用程序基础应用程序与系统命令的关系 典型应用程序目录常见的软件包装类型 rpm软件包管理工具RPM软件包rpm命令格式查询rpm软件包信息查询已安装的查询未安装的 安装或升级rpm软件卸载指定rpm软件辅助选项 维护RPM数据库解决软件包依赖关系方法 源代码编译安装…

铠侠全面复产:NAND价格还会涨吗?

近期&#xff0c;日本经济新闻&#xff08;Nikkei&#xff09;报道指出&#xff0c;经历长达20个月的产能削减后&#xff0c;全球第四大三维NAND闪存制造商铠侠已全面恢复生产。这一转变不仅标志着铠侠再次全力投入到市场份额的争夺中&#xff0c;也可能预示着闪存市场价格即将…

20240616日志:大模型压缩方法DMS

Location: Beijing 1 大模型剪枝 Fig. 1.1大模型压缩-剪枝 剪枝的理论来源基于彩票假设&#xff08;Lottery Ticket Hypothesis&#xff09;&#xff0c;指在神经网络中存在一种稀疏连接模式&#xff0c;即仅利用网络的一小部分连接&#xff08;彩票&#xff09;就足以实现与整…

git idea分支cherry-pick

git idea分支cherry-pick cherry-pick请注意操作前更新代码&#xff01;&#xff01;&#xff01;操作步骤 cherry-pick cherry-pick 挑拣樱桃&#xff0c;对应在分支开发中就是把提交记录从A分支挑拣到B分支 请注意操作前更新代码&#xff01;&#xff01;&#xff01; 操作…

数智教育创新如何向未来?腾讯云与你探索革新之路

引言 随着科技革命的快速发展&#xff0c;掀起教育领域的变革&#xff0c;新理念、新技术、新模式、新应用正不断涌现&#xff0c;正塑造着教育的未来形态。未来科技还将如何赋能教育创新&#xff1f; 5月31日&#xff0c;由腾讯云TVP 与西安电子科技大学联合举办的「数智教育的…

聊聊系统架构之负载均衡优化实践

一、写在前面 最近在进行线上监控检查时&#xff0c;我遇到了两个超出预期的案例。首先&#xff0c;网关层的监控数据与应用实际监控数据存在不一致性&#xff0c;尤其是max有较大的差异&#xff0c;详见如下图。其次在某个应用中&#xff0c;通过httpclient请求某域名时发现只…

创建最基本的web服务器-http模块

在Node.js中&#xff0c;可以使用内置的http模块来创建一个最基本的web服务器。以下是一个简单的示例&#xff0c;它创建了一个HTTP服务器&#xff0c;该服务器监听一个端口&#xff0c;并在接收到请求时发送一个“Hello, World!”的响应。 // 引入http模块 const http requi…

Ionic 创建 APP

Ionic 创建 APP Ionic 是一个强大的开源框架,用于构建高性能、高质量的移动和网页应用程序。它结合了 Angular、React 或 Vue 的强大功能,以及 Capacitor 或 Cordova 的原生功能,使得开发者可以轻松地创建跨平台的应用程序。本篇文章将指导您如何使用 Ionic 创建一个基本的…