【数据结构】二叉树前中后层序遍历代码实现以及各种操作与二叉树OJ题目

news2024/9/25 13:16:11

目录

一、二叉树的遍历

1、前序遍历

2、后续遍历

3、中序遍历

二、二叉树简单的操作

1、计算节点个数

1.二叉树所有节点个数

2.二叉树叶子节点个数

3.二叉树第K层节点个数

2、二叉树的高度

3、二叉树是否存在key

1.二叉树中是否存在key

2.寻找二叉树中key节点

三、二叉树OJ题目

1、力扣OJ:相同的树

2、力扣OJ:另一颗树的子树

3、力扣OJ:平衡二叉树

4、力扣OJ:对称二叉树

5、力扣OJ:层序遍历

6、牛客OJ:完全二叉树

一、二叉树的遍历

1、前序遍历

二叉树的前序遍历,顾名思义就是将根节点放在最前面进行遍历,也就是先遍历跟节点,然后再遍历左节点,最后右节点。如下图,按照前序遍历对这棵树进行遍历,我们先要遍历跟节点,然后左子树最后右子树 1-》2 -》4 -》8 -》5 -》9 -》 3 -》6 -》 7

144. 二叉树的前序遍历 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/binary-tree-preorder-traversal/

/**
 * 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<Integer> preorderTraversal(TreeNode root) {
        // 1. 创建List
        List<Integer> res = new ArrayList<>();
        // 2. 判断如果为空则直接返回
        if (root == null) {
            return res;
        }

        // 3. 先将根节点的值存入List
        res.add(root.val);
        // 4. 再去遍历他的左子树,将遍历的结果存入List
        res.addAll(preorderTraversal(root.left));
        // 5. 最后遍历右子树,再将结果存入List
        res.addAll(preorderTraversal(root.right));
        // 6. 最后返回
        return res;
    }
}

2、后序遍历

与前序遍历不同的是后序遍历是先遍历左节点然后右节点最后遍历根节点

145. 二叉树的后序遍历 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/binary-tree-postorder-traversal/

/**
 * 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<Integer> postorderTraversal(TreeNode root) {
        // 1. 创建List
        List<Integer> res = new ArrayList<>();
        // 2. 如果根节点为空则直接返回
        if (root == null) {
            return res;
        }

        // 3. 遍历左子树并将结果存入List
        res.addAll(postorderTraversal(root.left));
        // 4. 遍历右子树并将结果存入List
        res.addAll(postorderTraversal(root.right));
        // 5. 最后遍历根节点
        res.add(root.val);
        // 6. 返回List
        return res;
    }
}

3、中序遍历

中序遍历就是先遍历左节点,然后遍历根节点,最后再遍历右节点

94. 二叉树的中序遍历 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/binary-tree-inorder-traversal/

/**
 * 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<Integer> inorderTraversal(TreeNode root) {
        // 1. 创建List存储数据
        List<Integer> res = new ArrayList<>();
        // 2. 如果根节点为空则直接返回res
        if (root == null) {
            return res;
        }

        // 3. 先遍历左子树,将左子树的数据存入List
        res.addAll(inorderTraversal(root.left));
        // 4. 再遍历根节点
        res.add(root.val);
        // 5. 最后遍历右子树
        res.addAll(inorderTraversal(root.right));
        // 6. 返回数据
        return res;
    }
}

二、二叉树简单的操作

1、计算节点个数

1.二叉树所有节点个数

在计算节点个数的时候,采用子问题法将二叉树看作若干个子二叉树,则节点个数=当前节点的左子树个数+右子树节点个数+1,此时我们只需要进行递归遍历即可

    public int size(TreeNode root) {
        // 1. 如果根节点为空则返回0
        if (root == null) {
            return 0;
        }
        
        // 2. 节点个数 = 左子树节点个数 + 右子树节点个数 + 1(自身)
        return size(root.left) + size(root.right) + 1;
    }

2.二叉树叶子节点个数

与上树不同的是,我们只需计算叶子节点个数即可,那么叶子节点有什么特点呢,他的左右节点都为null,根据这一特点,我们可以知道一颗二叉树的叶子节点个数就 = 左子树叶子节点个数 + 右子树叶子节点个数

    public int leafSize(TreeNode root) {
        // 1. 如果根节点为空则返回0
        if (root == null) {
            return 0;
        }
        
        // 2. 如果该节点是叶子节点 则返回0
        if (root.left == null && root.right == null) {
            return 1;
        }
        
        // 3. 叶子节点 = 左子树叶子节点个数 + 右子树叶子节点个数
        return leafSize(root.left) + leafSize(root.right);
    }

3.二叉树第K层节点个数

我们在遍历整个树的过程中,第k层节点的个数 = 左子树第k层的个数 + 右子树第k层的个数

    public int getKSize(TreeNode root, int k) {
        // 1. 如果根节点是空则返回0
        if (root == null) {
            return 0;
        }
        
        // 2. 如果此时是第k层节点,则返回1
        if (k == 1) {
            return 1;
        }

        // 3. 第k层节点个数 = 左子树k层个数 + 右子树k层个数
        return getKSize(root.left,k - 1) + getKSize(root.right, k - 1);
    }

2、二叉树的高度

二叉树的高度其实就是左子树与右子树两个树的最大高度+1,而左子树的高度也就是左子树的左子树与左子树的右子树高度最大值+1

    public int height(TreeNode root) {
        // 1. 如果根节点为空则返回0
        if (root == null) {
            return 0;
        }
        
        // 2. 树的高度 = max(左子树高度,右子树高度) + 1
        return Math.max(height(root.left),height(root.right)) + 1;
    }

3、二叉树是否存在key

1.二叉树中是否存在key

二叉树中是否存在key,我们可以在遍历的时候进行判断,如果存在则返回,只要左子树或者右子树中的一个有就存在

    public boolean contains(TreeNode root, int key) {
        // 如果根节点为空,则返回false
        if (root == null) {
            return false;
        }

        // 如果相同则存在
        if (root.val == key) {
            return true;
        }

        return contains(root.left,key) || contains(root.right,key);
    }

2.寻找二叉树中key节点

在上面操作的基础上,我们如果发现这个节点后可直接将该节点进行返回

    public TreeNode find(TreeNode root, int key) {
        // 1. 如果根节点为空则不存在
        if (root == null) {
            return null;
        }

        // 2. 如果找到则直接返回该节点
        if (root.val == key) {
            return root;
        }

        // 3. 遍历左子树寻找该节点
        TreeNode left = find(root.left,key);
        if (left != null) {
            // 3.1 找到则返回
            return left;
        }

        // 4. 遍历右子树寻找该节点
        TreeNode right = find(root.right,key);
        if (right != null) {
            // 4.1 找到则返回
            return right;
        }

        // 5. 走到此处说明左子树与右子树都没有,则返回null
        return null;
    }

三、二叉树OJ题目

1、力扣OJ:相同的树

100. 相同的树 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/same-tree/

判断两颗二叉树是否相同,我们只需在遍历时判断这两棵树是否相同,可能存在以下几种情况 

 

/**
 * 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 isSameTree(TreeNode p, TreeNode q) {
        // 1. 如果都为空则相同
        if (p == null && q == null) return true;

        // 2. 如果一个有节点 一个没有则不相同
        if (p == null && q != null || q == null && p != null) return false;

        // 3. 如果节点的值不同,则两个树不相同
        if (p.val != q.val) return false;

        // 4. 此时说明根节点相同,还需要满足左子树相同并且右子树也相同
        return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
}

2、力扣OJ:另一颗树的子树

572. 另一棵树的子树 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/subtree-of-another-tree/

 

我们需要拿着子树与二叉树的根节点进行比较,看是否是相同的树,如果不是则与他的左子树进行比较,如果也不是则与他的右子树进行比较,以此类推,所有此处我们需要使用上一题的代码 

/**
 * 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 isSameTree(TreeNode p,TreeNode q) {
         // 1. 如果都为空则相同
        if (p == null && q == null) return true;

        // 2. 如果一个有节点 一个没有则不相同
        if (p == null && q != null || q == null && p != null) return false;

        // 3. 如果节点的值不同,则两个树不相同
        if (p.val != q.val) return false;

        // 4. 此时说明根节点相同,还需要满足左子树相同并且右子树也相同
        return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        // 1. 如果两个树其中一个是空则返回false
        if (root == null || subRoot == null) return false;

        // 2. 只要他与根节点 或者 左子树 或者 右子树 其中一个树相同,则他就是子树
        return isSameTree(root,subRoot) || isSubtree(root.left,subRoot) || isSubtree(root.right,subRoot);
    }
}

3、力扣OJ:平衡二叉树

110. 平衡二叉树 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/balanced-binary-tree/

以下是对平衡二叉树的定义 

那么判断一棵树是否是平衡二叉树,只需要根节点是平衡二叉树且他的左右子树都是平衡二叉树即可,因为需要判断左右子树的高度差,所有我们需要将前面求树的高度的代码用在此处 

/**
 * 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 {
    private int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }

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

    public boolean isBalanced(TreeNode root) {
        // 1. 如果根节点为空则返回真
        if (root == null) {
            return true;
        }

        // 2. 根节点满足 && 左右子树满足
        return Math.abs(maxDepth(root.left) - maxDepth(root.right)) <= 1 && isBalanced(root.left) && isBalanced(root.right);
    }
}

 但是上述代码的时间复杂度O(n^2),那么可以优化上述代码吗,我们在上述代码中在求左右子树高度的时候其实可以在递归遍历的时候进行处理,当求高度递归过程中发现存在根节点的左右子树高度差不满足<=1时就可返回一个负值表示,该二叉树中存在不平衡的子树,进而根据求高度时的返回值来判断是否是平衡二叉树了。这种实现方式时间复杂度则为O(n)

 

/**
 * 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 {
    private int maxDepth(TreeNode root) {
        // 1. 如果根节点为空则高度为0
        if (root == null) {
            return 0;
        }

        // 2. 计算左右子树高度
        int left = maxDepth(root.left);
        int right = maxDepth(root.right);
        // 3. 判断是否满足平衡二叉树
        if (left != -1 && right != -1 &&Math.abs(left - right) <= 1) {
            return Math.max(left,right) + 1;
        } else {
            // 3.1 不满足则返回-1
            return -1;
        }
    }

    public boolean isBalanced(TreeNode root) {
        // 1. 如果根节点为空则返回真
        if (root == null) {
            return true;
        }

        // 2. 根据求高度时返回值判断
        return maxDepth(root) >= 0;
    }
}

4、力扣OJ:对称二叉树

101. 对称二叉树 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/symmetric-tree/

我们只需要判断根节点的左右子树是否对称即可 

/**
 * 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) {
        // 1. 处理特殊情况
        if (root == null) {
            return true;
        }
        
        // 2. 只要左子树与右子树对称即可
        return isSymmetric(root.left,root.right);
    }

    private boolean isSymmetric(TreeNode root1,TreeNode root2) {
        // 1. 如果两颗树都为空则对称
        if (root1 == null && root2 == null) return true;

        // 2. 如果一棵树为空另一颗树不为空则不对称
        if (root1 == null && root2 != null || root1 != null && root2 == null) return false;

        // 3. 如果值不相同也不对称
        if (root1.val != root2.val) return false;

        // 4. 最后递归判断root1的左子树与root2的右子树,root1的右子树与root2的左子树是否相同
        return isSymmetric(root1.left,root2.right) && isSymmetric(root1.right,root2.left);
    }
}

5、力扣OJ:层序遍历

102. 二叉树的层序遍历 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/binary-tree-level-order-traversal/二叉树的层序遍历,此处我们使用队列来进行处理

 

 

 

/**
 * 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<List<Integer>> levelOrder(TreeNode root) {
        // 1. 如果根节点为空则直接返回
        List<List<Integer>> res = new ArrayList<>();
        if (root == null) {
            return res;
        }

        // 2. 将根节点存入队列
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        // 3. 循环处理
        while (!queue.isEmpty()) {
            // 3.1 计算该层元素个数
            int size = queue.size();
            List<Integer> row = new ArrayList<>();

            // 3.2 开始将该层元素存入row,并将下一层元素存入queue
            while (size-- != 0) {
                // 3.2.1 弹出队顶元素
                TreeNode top = queue.poll();
                // 3.2.2 将值存入row
                row.add(top.val);
                // 3.2.3 将下一层节点存入queue
                if (top.left != null) queue.offer(top.left);
                if (top.right != null) queue.offer(top.right);
            }

            // 3.3 将row存入res
            res.add(row);
        }

        // 4. 返回
        return res;
    }
}

6、牛客OJ:完全二叉树

判断是不是完全二叉树_牛客题霸_牛客网 (nowcoder.com)icon-default.png?t=N6B9https://www.nowcoder.com/practice/8daa4dff9e36409abba2adbe413d6fae?tpId=196&tqId=39379&ru=/exam/oj

以上是对完全二叉树的定义,我们此处也可以使用队列来处理,按照层序遍历的方法进行处理,不过在存入根节点的左右子树时不进行null值判断,也就是将null值也存入,最后通过判断队列里的元素是否全是null来判断是否是完全二叉树,如果是完全二叉树,按照层序遍历方式处理完队列中剩余元素全是null,而如果不是完全二叉树则不仅仅只要null 

 

 

 

 

上述 以不完全二叉树进行举例,可将完全二叉树进行上述操作,发现结果中队列里全为null

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return bool布尔型
     */
    public boolean isCompleteTree (TreeNode root) {
        // 1. 特殊处理
        if (root == null) {
            return true;
        }

        // 2. 创建队列,将根节点存入队列
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        // 3. 开始操作
        while (!queue.isEmpty()) {
            // 3.1 弹出队首元素
            TreeNode top = queue.poll();
            if (top != null) {
                // 3.1.2 将左右节点存入
                queue.offer(top.left);
                queue.offer(top.right);
            } else {
                // 3.1.3 出现null 结束循环
                break;
            }
        }

        // 4. 开始判断队列中是否全是null
        while (!queue.isEmpty()) {
            TreeNode top = queue.peek();
            if (top != null) {
                return false;
            } else {
                queue.poll();
            }
        }

        return true;
    }
}

 后续题目正在补充中……

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

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

相关文章

这些你值得拥有的音频转文字软件推荐给你

小明是一个音乐爱好者&#xff0c;他热爱听歌。然而&#xff0c;有一天&#xff0c;他突然失去了听力&#xff0c;这令他感到沮丧和无助&#xff0c;他再也无法知晓音乐的内容了。正当小明陷入困境时&#xff0c;他听说了一个神奇的技术——音频转文字。这项技术据说可以将音频…

Leetcode周赛 | 2023-7-24

2023-7-24 题1体会我的代码 题2这道题是一点都不会重点我的代码 题3重点我的代码 题二题三都不会621. 任务调度器思路 题1 体会 想到倒序遍历就可以。 我的代码 class Solution:def maxArrayValue(self, nums: List[int]) -> int:n len(nums)i n-1while i > 0 :if n…

CSS背景虚化

.mark{background-color: rgba(0,0,0,.1);-webkit-backdrop-filter: blur(3px);backdrop-filter: blur(3px); }backdrop-filter CSS 属性可以让你为一个元素后面区域添加图形效果&#xff08;如模糊或颜色偏移&#xff09;。 因为它适用于元素背后的所有元素&#xff0c;为了看…

MYSQL 高级SQL语句(二)

目录 一、表连接查询 1.1 left join&#xff08;左连接&#xff09; 1.2 right join&#xff08;右连接&#xff09; 1.3 inner join&#xff08;内连接&#xff09; 二、视图 2.1 视图表与派生表比较 一、表连接查询 MYSQL数据库中的三种连接&#xff1a; inner join(内…

pytorch分类和回归:阿里天池宠物年龄预测

文章目录 dog年龄预测论文Deep expectation of real and apparent age from a single image without facial landmarks分类的损失函数1.多分类交叉熵损失函数&#xff1a;2.KLDiv Loss&#xff1a; 分布差异3.facenet 三元组损失函数 timm and torchvisiontorchvision 尝试一&a…

刚创业,租什么类型办公场地比较合适

对于刚创业的公司&#xff0c;选择哪种类型的办公场地取决于公司的规模、预算和业务需求。以下是一些选择办公场地的考虑因素&#xff1a; 1. 灵活性&#xff1a;初创企业可能需要随着业务的发展和变化而快速调整办公空间。因此&#xff0c;选择一个灵活的办公场地&#xff0c…

深入学习 Redis - 深挖经典数据类型之 zset

目录 前言 一、zset 类型 1.1、操作命令 zadd / zrange&#xff08;添加 / 查询&#xff09; zcard&#xff08;个数&#xff09; zcount&#xff08;区间元素个数&#xff09; zrevrange&#xff08;逆序展示&#xff09; zrangebyscore&#xff08;按分数找元素&#…

服务器(容器)开发指南——SSH打洞开发

文章目录 SSH容器服务打包测试服务文件镜像打包 SSH打洞开发部署带SSH的容器SSH连接服务器&#xff08;容器内部&#xff09;SSH访问容器内的缺陷 IDE远程SSH开发VSCode远程SSH开发Jetbrains系列产品SSH远程开发 在进行定制化的服务开发时&#xff0c;我们有时候只能在固定的服…

页面设计—GridRow栅格行组件

1、何时使用 在栅格布局基础上&#xff0c;一般需要通过行&#xff08;GridRow&#xff09;和列&#xff08;GridCol&#xff09;来定义信息区块的外部框架&#xff0c;以保证页面的每个区域能够稳健地排布起来。 2、如何使用 &#xff08;1&#xff09;找到GridRow组件&…

乙酰基四肽-2--------增加肌肤紧实度,重建表皮结构

简介 为了避免皮肤下垂和松弛&#xff0c;以下几种重要蛋白共同参与&#xff0c;维持皮肤结构的粘着和紧致&#xff1a;Fibulin 5亦称FBLN-5&#xff0c;是细胞外基质蛋白Fibulin家族中的最新成员。它广泛分布于富含弹性纤维的组织&#xff0c;能直接与原弹性蛋白结合&#xf…

【矩特征】图像矩特征

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 cv2.moments() 矩特征 1. 正文 (1). 空间矩 零阶矩&#xff1a;m00一阶矩&#xff1a;m10,m01二阶矩&#xff1a;m20,m11,m02三阶矩&#xff1a;m30,m…

配置Tomcat远程调试

配置Tomcat远程调试 1.Tomcat开启远程访问调试1.1 编写脚本,开启配置1.2 重启Tomcat服务 2. IDEA配置远程调试Tomcat2.1 IDEA右上角更改配置2.2 添加一个remote jvm debug2.3 进行配置2.4 配置后进行启动连接至此在本地打断点即可调试远程服务器 1.Tomcat开启远程访问调试 1.1…

Cesium:加载geojson面贴地和显示边界问题

1.背景 cesium加载geojson面数据后&#xff0c;有部分数据在地形下面显示不全&#xff0c; 加了clampToGround: true&#xff0c;设置贴地后&#xff0c;边界又不见了 this.viewer.dataSources.add(GeoJsonDataSource.load(http://xx/xzbj.geojson, {stroke: Color.BLACK.with…

questasim一个

安装好questasim后默认的波形查看界面字体很小&#xff0c;颜色看起来也不舒服&#xff0c;所以调整了一下颜色布局如下图&#xff0c;顺便记录一下波形窗口颜色大小及选中行高亮如何设置 1、波形字体颜色设置 参考如何设置一个清爽的仿真窗口&#xff08;仿真工具使用技巧&a…

vue build 打包遇到bug解决记录

文章目录 vue-cli-service servevue打包修改dist文件夹名字vue build require is not defined 和 exports is not defind 错误 vue-cli-service serve 通常vue是不能直接使用vue-cli-service命令在终端运行的&#xff0c;所以才会在package.json中配置了scripts&#xff1a; …

精选 2023 年大厂高频 Java 面试真题集锦(含答案),面试一路开挂

本文涵盖了阿里巴巴、腾讯、字节跳动、京东、华为等大厂的 Java 面试真题&#xff0c;不管你是要面试大厂还是普通的互联网公司&#xff0c;这些面试题对你肯定是有帮助的&#xff0c;毕竟大厂一定是行业的发展方向标杆&#xff0c;很多公司的面试官同样会研究大厂的面试题。 …

小程序轮播图的两种后台方式(PHP)--【浅入深出系列008】

微信目录集链接在此&#xff1a; 详细解析黑马微信小程序视频–【思维导图知识范围】难度★✰✰✰✰ 不会导入/打开小程序的看这里&#xff1a;参考 让别人的小程序长成自己的样子-更换window上下颜色–【浅入深出系列001】 文章目录 本系列校训学习资源的选择啥是轮播图轮播…

基于Android系统的外卖APP【纯干货分享,免费领源码04871】

摘要 立足于当下餐饮行业现有的点餐模式&#xff0c;分析传统APP点餐的运作流程&#xff0c;结合Android系统的特点设计新型的外卖APP。近几年&#xff0c;人们生活水平日益提升&#xff0c;但工作强度和压力不断增强&#xff0c;尤其是对于上班族而言&#xff0c;到餐厅吃饭费…

C++实现通用进制转换

C实现通用进制转换 #include <iostream> #include <string> #include <algorithm> #include <sstream> using namespace std; // 将一个字符转换为对应的数字 int charToNum(char c) { if (c > 0 && c < 9)return c - 0; el…

四旋翼无人机使用教程

文章目录 前言一、检查遥控器电源开关混控拨码开关微调开关飞行模式刹车开关行程开关接收机对码 二、检查飞机检查接线 三、解锁并飞行 前言 PX4固件 QGC地面站 Pixhwak飞控 Mc6c遥控器 开源飞控博大精深&#xff0c;欢迎广大爱好者加博主微信名片&#xff0c;一起学习交流。…