【二叉树part02】| 102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树

目录

✿LeetCode102.二叉树的层序遍历❀

 ✿LeetCode226.翻转二叉树❀

 ✿LeetCode101.对称二叉树❀


✿LeetCode102.二叉树的层序遍历❀

链接:102.二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

 

 二叉树的层序遍历是广度优先遍历,前中后序遍历是深度优先遍历,层序遍历是用队列来操作的,代码如下:

java">public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> result=new ArrayList<>();
        if(root==null){
            return result;
        }
        Queue<TreeNode> qu=new LinkedList<>();
        qu.offer(root);
        while(!qu.isEmpty()){
            List<Integer> list=new ArrayList<>();
            int size=qu.size();
            while(!qu.isEmpty() && size>0){
                TreeNode node=qu.poll();
                list.add(node.val);
                if(node.left!=null){
                    qu.offer(node.left);
                }
                if(node.right!=null){
                    qu.offer(node.right);
                }
                size--;
            }
            result.add(list);    
        }
        return result;
    }

 ✿LeetCode226.翻转二叉树❀

链接:226.翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

 

 这道题有三种解法,分别是递归遍历、广度优先遍历、深度优先遍历,代码如下:

java">public TreeNode invertTree(TreeNode root) {
        // 递归法
        if(root==null){
            return null;
        }
        
        TreeNode temp=invertTree(root.left);
        root.left=invertTree(root.right);
        root.right=temp;
        return root;
    }
java">public TreeNode invertTree(TreeNode root) {
        if(root==null){
            return null;
        }
        
    //    深度优先遍历
        Stack<TreeNode> st=new Stack<>();
        st.push(root);
        while(!st.isEmpty()){
            TreeNode node=st.pop();
            TreeNode temp=node.left;
            node.left=node.right;
            node.right=temp;
            if(node.right!=null){
                st.push(node.right);
            }
            if(node.left!=null){
                st.push(node.left);
            }
        }
        return root;
    }
java">public TreeNode invertTree(TreeNode root) {
        if(root==null){
            return null;
        }
        // 广度优先遍历
        Queue<TreeNode> qu=new LinkedList<>();
        qu.add(root);
        while(!qu.isEmpty()){
           
            int size=qu.size();
            while(!qu.isEmpty() && size>0){
                TreeNode node=qu.poll();
                TreeNode temp=node.left;
                node.left=node.right;
                node.right=temp;
                if(node.left!=null){
                    qu.add(node.left);
                }
                if(node.right!=null){
                    qu.add(node.right);
                }
                size--;
            }
        }
        return root;

    }

 ✿LeetCode101.对称二叉树❀

链接:101.对称二叉树

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

 

 这道题的重点就是要分类讨论,代码如下:

java">public boolean isSymmetric(TreeNode root) {
        // 树中节点数目在范围 [1, 1000] 内
        return compare(root.left,root.right);
    }
    public boolean compare(TreeNode left,TreeNode right){
        if(left==null && right !=null){
            return false;
        }else if(left!=null && right==null){
            return false;
        }else if(left==null && right==null){
            return true;
        }else{
            if(left.val!=right.val){
                return false;
            }
        }
        boolean outside=compare(left.left,right.right);
        boolean inside=compare(left.right,right.left);
        return outside && inside;
    }

http://www.niftyadmin.cn/n/454462.html

相关文章

H3C交换机设置端口镜像

我们以XGE1/0/50为源端口&#xff0c;XGE1/0/51为观察口。 这样依次执行&#xff1a; (1).创建本地镜像组 mirroring-group 1 local(2).为镜像组配置源端口 mirroring-group 1 mirroring-port XGE1/0/50 both镜像可以根据实际情况灵活选择入方向、出方向及全部流量。 both&a…

在安卓中使用WebSocket

一、简介 WebSocket是一种在Web浏览器和服务器之间进行实时双向通信的协议。与传统的HTTP请求-响应模型不同&#xff0c;WebSocket允许服务器主动向客户端推送数据&#xff0c;而不需要客户端发起请求。当然&#xff0c;发展到如今&#xff0c;WebSocket已经不再局限于Web浏览…

JVM优化00

JVM优化 0.目标 了解下我们为什么要学习JVM优化掌握jvm的运行参数以及参数的设置掌握jvm的内存模型&#xff08;堆内存&#xff09;掌握jmap命令的使用以及通过MAT工具进行分析掌握定位分析内存溢出的方法掌握jstack命令的使用掌握VisualJVM工具的使用 1.为什么学习JVM优化 …

C++IO流和类型处理(11)

IO流 IO流包括 标准IO流&#xff0c;字符串流&#xff0c;文件流 标准IO流 基础使用 #include <iostream> //包括istream和ostream cin >> ----- 标准输入 cout<< ----- 标准输出 clog<< ----- 带缓冲区的标准错误 cerr<< ----- 不带缓冲…

java字符串常用方法

文章目录 将此字符串与指定对象进行比较。返回char指定索引处的值。测试字符串是否以指定后缀结尾测试字符串是否以指定前缀开头判读字符串是否为空求字符串长度指定子字符串的替代字符串拆分返回一个字符串&#xff0c;该字符串是此字符串的子字符串。将此字符串转化为新的字符…

拷贝目录到另外一台服务器,并且保持原属性不变

rsync -avz /app/console/ root192.168.1.167:/app/ mv tool app acquirer cstc/ useradd -u 530 -g 530 -d /app/cstc cstc chown cstc:cstc /app/cstc cp -a /etc/skel/. /app/cstc chown -R cstc:cstc /app/cstc 你可以使用cp命令&#xff08;copy&#xff09;来复制文件。…

Linux系统之部署Teleport堡垒机系统

Linux系统之部署Teleport堡垒机系统 一、Teleport介绍1.1 Teleport简介1.2 Teleport特点1.3 支持操作系统 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署teleport服务端4.1 创建部署目录4.2 下载t…

[建议收藏] Mysql+ETLCloud CDC+Doris实时数仓同步实战

一、业务需求及其痛点 随着数字化转型&#xff0c;企业需要对各种销售及营销数据进行实时同步分析&#xff0c;例如销售订单信息&#xff0c;库存信息&#xff0c;会员信息&#xff0c;设备状态信息等等&#xff0c;这些统计分析信息可以实时同步到 Doris中进行分析和统计&…