LeetCode —— 二叉树

news2024/12/28 22:32:48

持续更新中................

二叉树的定义

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    public TreeNode() {
    }

    public TreeNode(int val) {
        this.val = val;
    }

    public TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

144. 二叉树的前序遍历

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

示例1:输入:root = [1,null,2,3]         输出:[1,2,3]

//递归遍历
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        preorder(root, list);
        return list;
    }

    public void preorder(TreeNode root, List<Integer> list){
        if(root == null){
            return;
        }
        list.add(root.val);
        preorder(root.left, list);
        preorder(root.right, list);
    }
}
//迭代遍历
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        if(root == null){
            return list;
        }
        
        // 前序遍历顺序:中-左-右,入栈顺序:中-右-左
        Deque<TreeNode> deque = new LinkedList<>();
        deque.push(root);
        while(!deque.isEmpty()){
            TreeNode node = deque.pop();
            list.add(node.val);
            if(node.right != null){
                deque.push(node.right);
            }
            if(node.left != null){
                deque.push(node.left);
            }
        }
        return list;
    }
}
//迭代遍历(前序、后序、中序的统一形式)
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        Deque<TreeNode> deque = new LinkedList<>();

        if(root != null){
            deque.push(root);
        }

        while(!deque.isEmpty()){
            TreeNode node = deque.peek();
            if(node != null){
                deque.pop();
                //前序遍历顺序:中-左-右,入栈顺序:右-左-中,出栈顺序:中-左-右
                if(node.right != null){
                    deque.push(node.right);
                }
                if(node.left != null){
                    deque.push(node.left);
                }
                deque.push(node);

                deque.push(null);   //加入空节点做为标记,来将中节点取出
            }else{
                deque.pop();    //将空节点弹出
                
                node = deque.peek();
                list.add(node.val);   
                deque.pop();    
            }
        }

        return list;
    }
}

145. 二叉树的后序遍历

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 

示例1:输入:root = [1,null,2,3]         输出:[3,2,1]

//递归遍历
class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        postorder(root, list);
        return list;
    }

    public void postorder(TreeNode root, List<Integer> list){
        if(root == null){
            return;
        }
        postorder(root.left, list);
        postorder(root.right, list);
        list.add(root.val);
    }
}
//迭代遍历
class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        if(root == null){
            return list;
        }

        // 后序遍历顺序 左-右-中 入栈顺序:中-左-右 出栈顺序:中-右-左, 最后翻转结果得到 左-右-中
        Deque<TreeNode> deque = new LinkedList<>();
        deque.push(root);
        while(!deque.isEmpty()){
            TreeNode node = deque.pop();
            list.add(node.val);
            if(node.left != null){
                deque.push(node.left);
            }
            if(node.right != null){
                deque.push(node.right);
            }

        }
        Collections.reverse(list);
        return list;
    }
}
//迭代遍历(前序、后序、中序的统一形式)
class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        Deque<TreeNode> deque = new LinkedList<>();

        if(root != null){
            deque.push(root);
        }

        while(!deque.isEmpty()){
            TreeNode node = deque.peek();
            if(node != null){
                deque.pop();

                //后序遍历顺序:左-右-中,入栈顺序:中-右-左,出栈顺序:左-右-中
                deque.push(node);
                deque.push(null);   //加入空节点做为标记,来将节点取出
                if(node.right != null){
                    deque.push(node.right);
                }
                if(node.left != null){
                    deque.push(node.left);
                }
            }else{
                deque.pop();    //将空节点弹出

                node = deque.peek();
                list.add(node.val);
                deque.pop();
            }
        }

        return list;
    }
}

94. 二叉树的中序遍历

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

示例1:输入:root = [1,null,2,3]         输出:[1,3,2]

//递归遍历
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        inorder(root, list);
        return list;
    }

    public void inorder(TreeNode root, List<Integer> list){
        if(root == null){
            return;
        }
        inorder(root.left, list);
        list.add(root.val);
        inorder(root.right, list);
    }
}
//迭代遍历
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        if(root == null){
            return list;
        }

        //中序遍历顺序: 左-中-右 入栈顺序: 左-右
        Deque<TreeNode> deque = new LinkedList<>();
        TreeNode node = root;
        while(node != null || !deque.isEmpty()){
            if(node != null){
                deque.push(node);
                node = node.left;
            }else{
                node = deque.pop();
                list.add(node.val);
                node = node.right;
            }
        }
        return list;
    }
}
//迭代遍历(前序、后序、中序的统一形式)
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        Deque<TreeNode> deque = new LinkedList<>();

        if(root != null){
            deque.push(root);
        }

        while(!deque.isEmpty()){
            TreeNode node = deque.peek();
            if(node != null){
                deque.pop();

                //中序遍历顺序:左-中-右,入栈顺序:右-中-左,出栈顺序:左-中-右
                if(node.right != null){
                    deque.push(node.right);
                }
                deque.push(node);
                deque.push(null);   //加入空节点做为标记,来将节点取出
                if(node.left != null){
                    deque.push(node.left);
                }
            }else{
                deque.pop();    //将空节点弹出

                node = deque.peek();
                list.add(node.val);
                deque.pop();
            }
        }

        return list;
    }
}

102. 二叉树的层序遍历

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

示例1:输入:root = [3,9,20,null,null,15,7]         输出:[[3],[9,20],[15,7]]

//递归遍历
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> list = new ArrayList<>();
        levelOrderTraversal(root, list, 0);
        return list;
    }

    public void levelOrderTraversal(TreeNode root, List<List<Integer>> list, Integer deep){
        if(root == null){
            return;
        }

        deep++;

        if(list.size() < deep){
            List<Integer> item = new ArrayList<>();
            list.add(item);
        }
        list.get(deep - 1).add(root.val);

        levelOrderTraversal(root.left, list, deep);
        levelOrderTraversal(root.right, list, deep);
    }
}
//迭代遍历
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> list = new ArrayList<>();

        if(root == null){
            return list;
        }

        Deque<TreeNode> deque = new LinkedList<>();
        deque.offer(root);
        while(!deque.isEmpty()){
            List<Integer> item = new ArrayList<>();
            int len = deque.size();
            for(int i = 0; i < len; i++){
                TreeNode node = deque.poll();
                item.add(node.val);

                if(node.left != null){
                    deque.offer(node.left);
                }
                if(node.right != null){
                    deque.offer(node.right);
                }
            }
            list.add(item);
        }
        return list;
    }
}

107. 二叉树的层序遍历II

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

示例1:输入:root = [3,9,20,null,null,15,7]         输出:[[15,7],[9,20],[3]]

//递归遍历
class Solution107 {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        List<List<Integer>> list = new ArrayList<>();
        levelOrderTraversal(root, list, 0);
        Collections.reverse(list);
        return list;
    }

    public void levelOrderTraversal(TreeNode root, List<List<Integer>> list, Integer deep){
        if(root == null){
            return;
        }

        deep++;

        if(list.size() < deep){
            List<Integer> item = new ArrayList<>();
            list.add(item);
        }
        list.get(deep - 1).add(root.val);

        levelOrderTraversal(root.left, list, deep);
        levelOrderTraversal(root.right, list, deep);
    }
}
//迭代遍历
class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        List<List<Integer>> list = new ArrayList<>();

        if(root == null){
            return list;
        }

        Deque<TreeNode> deque = new LinkedList<>();
        deque.offer(root);
        while(!deque.isEmpty()){
            List<Integer> item = new ArrayList<>();
            int len = deque.size();
            for(int i = 0; i < len; i++){
                TreeNode node = deque.poll();
                item.add(node.val);

                if(node.left != null){
                    deque.offer(node.left);
                }
                if(node.right != null){
                    deque.offer(node.right);
                }
            }
            list.add(item);
        }

        Collections.reverse(list);
        return list;
    }
}

199. 二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例1:输入: [1,2,3,null,5,null,4]         输出: [1,3,4]

//递归遍历
class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> result = new ArrayList<>();

        List<List<Integer>> list = new ArrayList<>();
        levelOrderTraversal(root, list, 0);

        //先层序遍历,再取每一层最右侧的值
        for(List<Integer> item : list){
            result.add(item.get(item.size() - 1));
        }
        return result;
    }

    public void levelOrderTraversal(TreeNode root, List<List<Integer>> list, Integer deep){
        if(root == null){
            return;
        }

        deep++;

        if(list.size() < deep){
            List<Integer> item = new ArrayList<>();
            list.add(item);
        }
        list.get(deep - 1).add(root.val);

        levelOrderTraversal(root.left, list, deep);
        levelOrderTraversal(root.right, list, deep);
    }
}
//迭代遍历
class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> list = new ArrayList<>();

        if(root == null){
            return list;
        }

        Deque<TreeNode> deque = new LinkedList<>();
        deque.offer(root);
        while(!deque.isEmpty()){
            int len = deque.size();
            for(int i = 0; i < len; i++){
                TreeNode node = deque.poll();
                if(i == len - 1){
                    list.add(node.val);
                }
                if(node.left != null){
                    deque.offer(node.left);
                }
                if(node.right != null){
                    deque.offer(node.right);
                }
            }
        }

        return list;
    }
}

637. 二叉树的层平均值

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。

示例1: 输入:root = [3,9,20,null,null,15,7]         输出:[3.00000,14.50000,11.00000]

//递归遍历
class Solution637 {
    public List<Double> averageOfLevels(TreeNode root) {
        List<List<Integer>> list = new ArrayList<>();
        levelOrderTraversal(root, list, 0);

        List<Double> result = new ArrayList<>();
        for(List<Integer> item : list){
            double sum = 0;
            for(int i : item){
                sum += i;
            }
            result.add(sum / item.size());
        }

        return result;
    }

    public void levelOrderTraversal(TreeNode root, List<List<Integer>> list, Integer deep){
        if(root == null){
            return;
        }

        deep++;

        if(list.size() < deep){
            List<Integer> item = new ArrayList<>();
            list.add(item);
        }
        list.get(deep - 1).add(root.val);

        levelOrderTraversal(root.left, list, deep);
        levelOrderTraversal(root.right, list, deep);
    }
}
//迭代遍历
class Solution {
    public List<Double> averageOfLevels(TreeNode root) {
        List<Double> list = new ArrayList<>();

        if(root == null){
            return list;
        }

        Deque<TreeNode> deque = new LinkedList<>();
        deque.offer(root);
        while(!deque.isEmpty()){
            double sum = 0;
            int len = deque.size();
            for(int i = 0; i < len; i++){
                TreeNode node = deque.poll();
                sum += node.val;

                if(node.left != null){
                    deque.offer(node.left);
                }
                if(node.right != null){
                    deque.offer(node.right);
                }
            }
            list.add(sum / len);
        }

        return list;
    }
}

429. N叉树的层序遍历

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

示例1:输入:root = [1,null,3,2,4,null,5,6]         输出:[[1],[3,2,4],[5,6]]

class Node {
    public int val;
    public List<Node> children;

    public Node() {}

    public Node(int val) {
        this.val = val;
    }

    public Node(int val, List<Node> children) {
        this.val = val;
        this.children = children;
    }
}
//递归
class Solution {
    public List<List<Integer>> levelOrder(Node root) {
        List<List<Integer>> list = new ArrayList<>();
        levelOrderTraversal(root, list, 0);
        return list;
    }

    public void levelOrderTraversal(Node root, List<List<Integer>> list, Integer deep){
        if(root == null){
            return;
        }

        deep++;

        if(list.size() < deep){
            List<Integer> item = new ArrayList<>();
            list.add(item);
        }
        list.get(deep - 1).add(root.val);

        for(Node child : root.children){
            levelOrderTraversal(child, list, deep);
        }
    }
}
//迭代
class Solution {
    public List<List<Integer>> levelOrder(Node root) {
        List<List<Integer>> list = new ArrayList<>();
        if(root == null){
            return list;
        }

        Deque<Node> deque = new LinkedList<>();
        deque.offer(root);
        while(!deque.isEmpty()){
            List<Integer> item = new ArrayList<>();
            int len = deque.size();
            for(int i = 0; i < len; i++){
                Node node = deque.poll();
                item.add(node.val);

                for(Node child : node.children){
                    deque.offer(child);
                }
            }
            list.add(item);
        }

        return list;
    }
}

515. 在每个树行中找最大值

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

示例1:输入: root = [1,3,2,5,3,null,9]         输出: [1,3,9]

//递归
class Solution {
    public List<Integer> largestValues(TreeNode root) {
        List<Integer> result = new ArrayList<>();

        List<List<Integer>> list = new ArrayList<>();
        levelOrderTraversal(root, list, 0);
        
        for(List<Integer> item : list){
            result.add(Collections.max(item));
        }
        return result;
    }

    public void levelOrderTraversal(TreeNode root, List<List<Integer>> list, int deep){
        if(root == null){
            return;
        }
        
        deep++;
        
        if(list.size() < deep){
            List<Integer> item = new ArrayList<>();
            list.add(item);
        }
        list.get(deep - 1).add(root.val);

        levelOrderTraversal(root.left, list, deep);
        levelOrderTraversal(root.right, list, deep);
    }
}
//迭代
class Solution {
    public List<Integer> largestValues(TreeNode root) {
        List<Integer> result = new ArrayList<>();

        if(root == null){
            return result;
        }

        Deque<TreeNode> deque = new LinkedList<>();
        deque.offer(root);
        while(!deque.isEmpty()){
            int maxValue = Integer.MIN_VALUE;
            int len = deque.size();
            for(int i = 0; i < len; i++){
                TreeNode node = deque.poll();
                maxValue = node.val > maxValue? node.val : maxValue;

                if(node.left != null){
                    deque.offer(node.left);
                }
                if(node.right != null){
                    deque.offer(node.right);
                }
            }
            result.add(maxValue);
        }

        return result;
    }
}

116. 填充每个节点的下一个右侧节点指针

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

示例1:输入:root = [1,2,3,4,5,6,7]         输出:[1,#,2,3,#,4,5,6,7,#]

class Solution {
    public Node connect(Node root) {
        if(root == null){
            return null;
        }

        Deque<Node> deque = new LinkedList<>();
        deque.offer(root);
        while(!deque.isEmpty()){
            int len = deque.size();
            for(int i = 0; i < len; i++){
                Node node = deque.poll();
                if(i < len - 1){
                    node.next = deque.peek();
                }

                if(node.left != null){
                    deque.offer(node.left);
                }
                if(node.right != null){
                    deque.offer(node.right);
                }
            }
        }
        return root;
    }
}

public class Node {
    public int val;
    public Node left;
    public Node right;
    public Node next;

    public Node() {}

    public Node(int val) {
        this.val = val;
    }

    public Node(int val, Node left, Node right, Node next) {
        this.val = val;
        this.left = left;
        this.right = right;
        this.next = next;
    }
}

117. 填充每个节点的下一个右侧节点指针II

给定一个二叉树,填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。

示例1:输入:root = [1,2,3,4,5,null,7]         输出:[1,#,2,3,#,4,5,7,#]

class Solution {
    public Node connect(Node root) {
        if(root == null){
            return null;
        }

        Deque<Node> deque = new LinkedList<>();
        deque.offer(root);
        while(!deque.isEmpty()){
            int len = deque.size();
            for(int i = 0; i < len; i++){
                Node node = deque.poll();
                if(i < len - 1){
                    node.next = deque.peek();
                }

                if(node.left != null){
                    deque.offer(node.left);
                }
                if(node.right != null){
                    deque.offer(node.right);
                }
            }
        }
        return root;
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx看这一篇文章就够了

一、Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的。其特点是占有内存少&#xff0c…

智能机柜PDU助力中小型数据中心机房末端配电系统建设

数据中心作为我国已确定“新基建”的七大领域之一&#xff0c;在国民经济和社会发展中扮演中越来越重要的角色&#xff0c;成为各行各业的关键基础设施&#xff0c;为各产业转型升级提供了重要支撑。据相关数据显示&#xff0c;2018年至今&#xff0c;我国的数据中心市场年均复…

项目管理工具dhtmlxGantt甘特图入门教程(四):可见性和布局视图大小设置

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足项目管理控件应用程序的所有需求&#xff0c;是完善的甘特图图表库。这篇文章给大家讲解 dhtmlxGantt的可见性组、布局大小和隐藏父布局视图。 DhtmlxGantt正版试用下载&#xff08;qun&…

【BP靶场portswigger-服务端3】目录遍历漏洞-6个实验(全)

目录 一、目录遍历 1、意义 二、通过目录遍历阅读任意文件 1、示例 实验1&#xff1a;文件路径遍历&#xff08;简单&#xff09; 三、利用文件路径遍历漏洞的常见障碍 1、对于../等的限制 实验2&#xff1a;文件路径遍历&#xff08;用绝对路径旁路阻止遍历序列&#xf…

相距两千多公里,仅仅数月,从相亲走到结婚 | 2022年复盘日记

&#x1f468;‍&#x1f393;作者&#xff1a;bug菌 &#x1f389;简介&#xff1a;CSDN、掘金等社区优质创作者&#xff0c;全网合计7w粉&#xff0c;对一切技术都感兴趣&#xff0c;重心偏Java方向&#xff0c;目前运营公众号「猿圈奇妙屋」&#xff0c;欢迎小伙伴们的加入&…

制造型企业如何利用WMS系统在大环境中取胜

如今数字化转型已经成为制造型企业高质量高发展的重要手段&#xff0c;越来越多的企业开始加大对数字化转型的投入来提升竞争力。例如&#xff1a;有些企业会上线WMS系统来搭建自己的数字化仓库管理平台&#xff0c;实现仓库业务的自动化和数字化升级。随着制造企业市场规模的不…

基于Xlinx的时序分析与约束(6)----如何读懂vivado下的时序报告?

写在前面 在《基于Xlinx的时序分析与约束&#xff08;3&#xff09;----基础概念&#xff08;下&#xff09;》文章中写了一些时序分析的基础概念&#xff0c;同时还说了文章中提到的公式根本就不需要记忆&#xff0c;因为综合工具vivado会帮你把所有时序路径都做详尽的分析&am…

Springboot延伸之自定义Banner

前言 前几周陆陆续续花了5万多字写了我读到的Springboot启动过程的源码&#xff0c;收获颇多&#xff0c;其中给自己留了扩展的作业。我们每次启动Springboot的时候&#xff0c;都有一个Spring的Banner&#xff0c;读源码的过程中可以得知我们可以自定义属于自己的Banner&…

领域驱动设计

DDD的代码结构_ronshi的博客-CSDN博客_ddd代码结构 DDD( 领域驱动设计)概念来源于2004年著名建模专家eric evans的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名&#xff1a;领域驱动设计—软件核心复杂性应对之道)。 DDD领域驱动设…

全流量安全分析为IT运维提供高效保障(二)

前言 某高校信息中心老师反应&#xff0c;用户反馈教务系统有访问慢的情况&#xff0c;需要通过流量分析系统来了解系统的运行情况&#xff0c;此报告专门针对系统的性能数据做了分析。 前一章做了系统功能模块分析和整体流量分析&#xff0c;本章将进行异常分析、其他信息发…

【Linux】C语言缓冲区、缓冲区的实现

目录 一、C语言缓冲区 1.1 什么是缓冲区 1.2 缓冲区刷新 1.3 问题解释 1.4 stdout与stderr 1.5 perror的实现 二、模拟实现缓冲区 2.1 接口展示 2.2 函数实现 2.3 测试与源代码 一、C语言缓冲区 1.1 什么是缓冲区 缓冲区本质是一块C语言提供的内存空间&#xff0c…

边缘计算网关的应用有哪些

边缘计算网关&#xff08;又叫物联网边缘计算网关&#xff09;&#xff0c;简称 Edge-Gateway&#xff0c;是一种可以在设备上运行本地计算、消息通信、数据缓存等功能的工业智能网关&#xff0c;可以在无需联网的情况实现设备的本地联动以及数据处理分析。 其具备接口丰富&…

无线蓝牙耳机什么牌子的好?好的无线蓝牙耳机推荐

无线蓝牙耳机因为携带更便捷&#xff0c;连接也越来越迅速而受到了不少用户的喜爱。在目前的耳机市场中&#xff0c;蓝牙耳机所占的比例越来越高&#xff0c;无线蓝牙耳机牌子也逐渐增多。那么&#xff0c;什么牌子的无线蓝牙耳机好&#xff1f;下面&#xff0c;我给大家盘点了…

迁移学习的 PyTorch 实现

什么是迁移学习&#xff1f;迁移学习是一种用于机器学习的技术&#xff0c;它使用预先训练好的模型来创建新的模型。这可以减少新创建模型所需的训练时间&#xff0c;因为它将继承以前学习的特性&#xff0c;这也将提高其准确性。但是迁移学习能带来多大的不同呢&#xff1f;为…

销售促单话术

销售过程中&#xff0c;销售不仅可以运用一些销售技巧来吸引客户的兴趣&#xff0c;也可以通过一些话术来获得客户的认同。 ​ 前言 销售过程中&#xff0c;销售不仅可以运用一些销售技巧来吸引客户的兴趣&#xff0c;也可以通过一些话术来获得客户的认同。很多销售一定遇到过…

【观察】全面赋能汽车行业数字化转型,亚马逊云科技的决心与诚意

毫无疑问&#xff0c;新一轮科技革命正在驱动整个汽车产业发生颠覆性的重大变革&#xff0c;传统的行业游戏规则也将在数字化时代被改写&#xff0c;而未来以电动化、智能化、互联化、共享化为特征的“新四化”&#xff0c;也正在成为整个汽车产业技术创新和商业模式进化的新方…

一文带你走进Python文件操作

Py文件操作 一: """ 1.找到这个文件,双击打开 ​ open(文件路径,mode"",encoding"") mode>读/写 encoding>文件的编码集是什么 ​文件路径:1.绝对路径d:Tools/Tool/python/a.txt 不安全2.相对路径相对于当前你的程序所在的文件夹…

回首来时路,未来皆坦途.......

不觉间&#xff0c;又到了年末&#xff0c;这一年似乎并没有什么特别的经历和值得一提的业绩&#xff0c;就是这样平淡的过着每一天&#xff0c;这大概就是普通人的人生吧..... 今年最大的改变就是跨行业成长&#xff0c;从事了售前工程师的工作&#xff0c;由于之前并没有相关…

20221230英语学习

今日单词 agreeable adj.惬意的&#xff0c;宜人的&#xff1b;可接受的&#xff0c;适合的&#xff1b;欣然同意的 gleam v.发微光&#xff1b;闪烁&#xff1b;隐约闪光&#xff1b;&#xff08;在眼中&#xff09;闪现&#xff1b;表露 hypothesis n.[复数hypotheses] 假…

CSS3 filter滤镜

filter 顾名思义就是过滤的意思 使用 filter属性为元素(常用于<img>)带来视觉的效果 filter描述none默认值&#xff0c;没有效果。blur(px)给图像设置模糊效果。默认是0&#xff1b;这个参数可设置css长度值&#xff0c;但不接受百分比值。brightness(%)调整图像的对比…