二叉树层序遍历技术解析与面试指南
文章目录
- 一、二叉树层序遍历技术解析
- 1. 问题描述
- 2. 层序遍历核心思想
- 3. Java实现代码(带详细注释)
- 4. 算法关键点解析
- 5. 复杂度分析
- 二、资深后端面试深度指南
- 1. 高频面试问题集
- Q1: 如何实现Z字形层序遍历(锯齿形遍历)?
- Q2: 如何处理超大规模树的层序遍历?
- Q3: 如何验证层序遍历的正确性?
- 2. 面试加分技巧
- 三、典型应用场景
- 四、延伸学习建议
一、二叉树层序遍历技术解析
1. 问题描述
102. 二叉树的层序遍历
2. 层序遍历核心思想
层序遍历(Level Order Traversal)是一种**广度优先搜索(BFS)**算法,按层级从上到下、从左到右访问二叉树节点。其核心特点是:
- 使用队列数据结构辅助实现
- 按层划分节点,输出结果为二维列表
- 时间复杂度 O(n),空间复杂度 O(n)
3. Java实现代码(带详细注释)
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;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;}
}public class LevelOrderTraversal {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> result = new ArrayList<>();if (root == null) return result;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root); // 使用offer()避免队列满时抛出异常while (!queue.isEmpty()) {int levelSize = queue.size(); // 关键点:记录当前层节点数List<Integer> currentLevel = new ArrayList<>();for (int i = 0; i < levelSize; i++) {TreeNode node = queue.poll();currentLevel.add(node.val);// 严格判断左右子树存在性后再入队if (node.left != null) queue.offer(node.left);if (node.right != null) queue.offer(node.right);}result.add(currentLevel); // 添加当前层结果}return result;}
}
4. 算法关键点解析
关键点 | 说明 |
---|---|
队列初始化 | 使用LinkedList实现Queue接口,满足FIFO特性 |
levelSize记录 | 确保准确处理当前层所有节点,避免下层节点干扰 |
空值检查 | 入队前严格检查子节点存在性,避免NPE异常 |
结果存储结构 | 使用List<List>实现分层存储,保留层级信息 |
5. 复杂度分析
指标 | 说明 |
---|---|
时间复杂度 | O(n) - 每个节点恰好访问一次 |
空间复杂度 | O(n) - 最坏情况队列存储最后一层节点(完美二叉树约n/2) |
二、资深后端面试深度指南
1. 高频面试问题集
Q1: 如何实现Z字形层序遍历(锯齿形遍历)?
答案示例:
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> result = new ArrayList<>();if (root == null) return result;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);boolean reverse = false;while (!queue.isEmpty()) {int size = queue.size();LinkedList<Integer> level = new LinkedList<>();for (int i = 0; i < size; i++) {TreeNode node = queue.poll();if (reverse) {level.addFirst(node.val); // 逆序插入} else {level.addLast(node.val); // 正序插入}if (node.left != null) queue.offer(node.left);if (node.right != null) queue.offer(node.right);}result.add(level);reverse = !reverse;}return result;
}
考察点:
- 对双向链表的灵活使用(addFirst/addLast)
- 状态标记的运用(reverse变量)
- 空间复杂度的优化意识
Q2: 如何处理超大规模树的层序遍历?
参考思路:
-
内存优化:
- 使用ArrayDeque代替LinkedList(减少内存开销)
- 分批处理节点(当层节点数超过阈值时持久化到磁盘)
-
并发处理:
ExecutorService executor = Executors.newFixedThreadPool(4); List<Future<List<Integer>>> futures = new ArrayList<>();while (!queue.isEmpty()) {// 将每层处理封装为独立任务final int levelSize = queue.size();final List<TreeNode> currentLevelNodes = new ArrayList<>(levelSize);for (int i = 0; i < levelSize; i++) {currentLevelNodes.add(queue.poll());}futures.add(executor.submit(() -> {List<Integer> levelResult = new ArrayList<>();for (TreeNode node : currentLevelNodes) {levelResult.add(node.val);// 注意:需要线程安全的队列实现if (node.left != null) concurrentQueue.offer(node.left);if (node.right != null) concurrentQueue.offer(node.right);}return levelResult;})); }
考察点:
- 对Java并发包的理解
- 线程安全队列的选择(如ConcurrentLinkedQueue)
- 任务划分的合理性
Q3: 如何验证层序遍历的正确性?
测试用例设计:
测试场景 | 输入树结构 | 预期输出 |
---|---|---|
空树 | null | [] |
单节点树 | [1] | [[1]] |
完全二叉树 | [1,2,3,4,5,6,7] | [[1],[2,3],[4,5,6,7]] |
右斜树 | [1,null,2,null,3] | [[1],[2],[3]] |
考察点:
- 边界条件处理能力
- 测试用例设计方法论
- 对特殊树结构的理解
2. 面试加分技巧
-
扩展问题应对:
- “如果要求使用DFS实现层序遍历怎么办?”
public List<List<Integer>> levelOrderDFS(TreeNode root) {List<List<Integer>> result = new ArrayList<>();dfs(root, 0, result);return result; }private void dfs(TreeNode node, int level, List<List<Integer>> result) {if (node == null) return;if (result.size() == level) {result.add(new ArrayList<>());}result.get(level).add(node.val);dfs(node.left, level + 1, result);dfs(node.right, level + 1, result); }
- “如果要求使用DFS实现层序遍历怎么办?”
-
原理深度理解:
- 队列容量分析:对于完全二叉树,最后一层节点数约等于前面所有层节点数之和
- 内存布局优化:对于C++等语言可考虑节点内存预分配
-
工程化思维:
- 提出封装遍历器(Iterator)的实现方案:
public class LevelOrderIterator implements Iterator<List<Integer>> {private Queue<TreeNode> queue = new LinkedList<>();public LevelOrderIterator(TreeNode root) {if (root != null) queue.offer(root);}@Overridepublic boolean hasNext() {return !queue.isEmpty();}@Overridepublic List<Integer> next() {// 实现层遍历逻辑} }
- 提出封装遍历器(Iterator)的实现方案:
三、典型应用场景
-
树结构序列化:
public String serialize(TreeNode root) {// 使用层序遍历实现序列化 }public TreeNode deserialize(String data) {// 逆向层序遍历构建树 }
-
查找每层最大值:
public List<Integer> largestValues(TreeNode root) {List<Integer> result = new ArrayList<>();// 在层序遍历基础上记录每层最大值return result; }
-
判断完全二叉树:
public boolean isCompleteTree(TreeNode root) {Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);boolean end = false;while (!queue.isEmpty()) {TreeNode node = queue.poll();if (node == null) {end = true;} else {if (end) return false;queue.offer(node.left);queue.offer(node.right);}}return true; }
四、延伸学习建议
-
扩展数据结构:
- 学习N叉树的层序遍历实现
- 研究红黑树等平衡树的遍历特性
-
算法优化方向:
- 探索Morris遍历算法的空间优化
- 研究并行遍历算法的实现
-
系统设计应用:
- 文件系统的层级目录遍历
- 组织结构图的层级关系分析
通过掌握层序遍历的核心原理与扩展应用,可以更从容地应对树结构相关的问题,展现系统级的算法设计能力。
相关文章:
二叉树层序遍历技术解析与面试指南
文章目录 一、二叉树层序遍历技术解析1. 问题描述2. 层序遍历核心思想3. Java实现代码(带详细注释)4. 算法关键点解析5. 复杂度分析 二、资深后端面试深度指南1. 高频面试问题集Q1: 如何实现Z字形层序遍历(锯齿形遍历)?…...
软考软件设计师考试情况与大纲概述
文章目录 **一、考试科目与形式****二、考试大纲与核心知识点****科目1:计算机与软件工程知识****科目2:软件设计** **三、备考建议****四、参考资料** 这是一个系列文章的开篇 本文对2025年软考软件设计师考试的大纲及核心内容进行了整理,并…...
一款丰富的工作流自动化平台 | N8N 83.6K ⭐
N8N 介绍 N8N 是一个工作流自动化平台,为技术团队提供代码的灵活性和无代码的速度。n8n 具有 400 集成、原生 AI 功能和公平代码许可证,可让您构建强大的自动化功能,同时保持对数据和部署的完全控制。 🚢 项目地址 Github: https…...
Apache PDFBox
Apache PDFBox 是一个用于处理 PDF 文档的开源 Java 库,由 Apache 软件基金会开发和维护。它提供了丰富的功能,允许开发者在 Java 应用程序中创建、读取、修改和提取 PDF 文件中的信息。以下是关于 PDFBox 的详细介绍: 主要功能 创建 PDF 文…...
如何批量为多个 Word 文档添加水印保护
在日常办公中,Word文档添加水印是一项重要的操作,特别是在需要保护文件内容的安全性和版权时。虽然Office自带了添加水印的功能,但当需要一次性给多个Word文档添加水印时,手动操作显得非常繁琐且低效。为了提高效率,可…...
【MySQL】005.MySQL表的约束(上)
文章目录 表的约束1. 约束概念2. 空属性2.1 基本语法2.2 使用示例 3. 默认值3.1 基本概念3.2 使用示例 4. 列描述4.1 基本概念4.2 使用示例 5. zerofill5.1 基本功能5.2 使用示例5.3 注意事项 6. 主键6.1 基本概念6.2 使用示例 表的约束 1. 约束概念 真正约束字段的是数据类型…...
力扣刷题Day 27:环形链表(141)
1.题目描述 2.思路 创建一个结点集合,遍历链表,如果遇到已经加进集合的结点就说明链表有环。 3.代码(Python3) class Solution:def hasCycle(self, head: Optional[ListNode]) -> bool:node headnode_set set()while node…...
window上 elasticsearch v9.0 与 jmeter5.6.3版本 冲突,造成es 启动失败
[2025-04-22T11:00:22,508][ERROR][o.e.b.Elasticsearch ] [AIRUY] fatal exception while booting Elasticsearchjava.nio.file.NoSuchFileException: D:\Program Files\apache-jmeter-5.6.3\lib\logkit-2.0.jar 解决方案: 降低 es安装版本 ,选择…...
PDF转换Word深度评测 - ComPDFKit Conversion SDK V3.0
ComPDFKit PDF 转换 SDK 在V3.0 中有以下几个新功能: 使用百万级文档训练数据集对 PPYoloE AI 模型进行微调 全场景布局分析算法及下一代表格识别算法 重构数据结构、转换流程、PDF解析和输出模块 混合布局:将流式布局与固定布局相结合,以保持原始布局…...
Laravel 对接阿里云 OSS 说明文档
Laravel 对接阿里云 OSS 说明文档 一、 简介 将 Laravel 应用与阿里云对象存储服务 (OSS) 对接,可以利用 OSS 提供的高可用、高可靠、可扩展的存储能力来管理应用中的文件,例如用户上传的图片、视频、文档等。这有助于减轻应用服务器的存储压力&#x…...
嘻游电玩三端客户端部署实战:PC + Android + iOS 环境全覆盖教程
本篇文章将针对“网狐系列嘻游电玩组件”的三端客户端(PC端、安卓端、iOS端)进行详细部署实操讲解。文章将以实测部署为核心,提供资源结构说明、平台适配调整、打包配置、常见问题修复,并辅以必要的关键配置代码。 一、客户端资源…...
mockMvc构建web单元测试学习笔记
web应用本来需要依靠tomcat这个环境运行 现在用mockMvc是为了模拟这个web环境,简化测试 什么是mock(模拟) 模拟对象---mock object是以可控方式模拟真实对象行为的假对象,通过模拟输入数据,验证程序达到预期结果 为什么使用mock对象 因为…...
ffmpeg av_buffer_unref的逻辑实现; av_freep 和 av_freep函数的区别
av_buffer_unref 是 FFmpeg 中用于管理引用计数和内存释放的核心函数,其内部实现机制如下: 一、核心流程 引用计数递减 函数首先对 AVBufferRef 的 buffer->refcount 进行原子递减操作(通过 atomic_fetch_add_explicit 等机制保证…...
Flutter IOS 真机 Widget 错误。Widget 安装后系统中没有
错误信息: SendProcessControlEvent:toPid: encountered an error: Error Domaincom.apple.dt.deviceprocesscontrolservice Code8 "Failed to show Widget com.xxx.xxx.ServerStatus error: Error DomainFBSOpenApplicationServiceErrorDomain Code1 "T…...
Jenkins plugin 的用法和示例
今天介绍一下比较常见的Jenkins plugin 的使用方法 1. 通过AWS s3 upload 插件上传文件到AWS S3 存储桶 前提条件: 安装AWS pipeline step插件在Jenkins 中创建credentials,包含access_key_id和secret_key_id创建S3 存储桶 脚本: pipeli…...
利用java语言,怎样开发和利用各种开源库和内部/自定义框架,实现“提取-转换-加载”(ETL)流程的自动化
一、ETL 架构设计的核心要素 在企业级数据处理场景中,ETL(Extract-Transform-Load)流程自动化是数据仓库、数据湖建设的核心环节。基于 Java 生态的技术栈,我们可以构建分层解耦的 ETL 架构,主要包含以下四层结构&am…...
人工智能在PET-CT中的应用方向探析
人工智能(AI)在正电子发射断层扫描-计算机断层扫描(PET-CT)中的应用正逐步改变医学影像诊断的格局,其核心价值体现在提升诊断效率、优化成像质量、促进精准医疗等方面。近年来,随着深度学习、计算机视觉以及多模态数据融合技术的迅猛发展,AI技术在PET-CT全流程中的渗透愈…...
pod 创建私有库指南
步骤 参考:iOS Pod 私有库创建指南-百度开发者中心 下面主要是对参考链接里面的解释: 创建两个仓库: 一个叫podframe.git,用来存放自定义的framework,比如TestPodFrame.framework一个叫podspec.git,用来…...
操作系统之shell实现(下)
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
【设计模式】深入解析代理模式(委托模式):代理模式思想、静态模式和动态模式定义与区别、静态代理模式代码实现
代理模式 代理模式,也叫委托模式。 Spring AOP 是基于动态代理来实现 AOP 的 定义 为其他对象提供一种代理 以控制对这个对象的访问。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而…...
Element Plus表格组件深度解析:构建高性能企业级数据视图
一、架构设计与核心能力 Element Plus的表格组件(el-table)基于Vue 3的响应式系统构建,通过声明式配置实现复杂数据渲染。其核心设计理念体现在三个层级: 数据驱动:通过data属性绑定数据源,支持动态更新与…...
Mongodb分布式文件存储数据库
文章目录 一、MongoDB 简介基本信息特点内部组件 二、MongoDB 部署1. 安装依赖2. 解压部署并配置环境变量3. 修改配置文件以及启动服务4.数据库权限管理 三、MongoDB 管理1. 角色权限2. 操作命令用户管理命令常用命令(Mongo4.2.8)数据库相关用户相关集合…...
UML 通信图对象协作:共享汽车系统交互脉络
目录 一、通信图的定义与特点 二、通信图的构成要素 三、通信图的优势 四、通信图的实践应用 五、以共享汽车系统通信图为例 (一)参与者及交互起点 (二)预订环节交互 (三)支付流程交互 ࿰…...
安宝特分享|AR智能装备赋能企业效率跃升
AR装备开启智能培训新时代 在智能制造与数字化转型浪潮下,传统培训体系正面临深度重构。安宝特基于工业级AR智能终端打造的培训系统,可助力企业构建智慧培训新生态。 AR技术在不同领域的助力 01远程指导方面 相较于传统视频教学的单向输出模式&#x…...
中间系统-基础
OSI七层模型,TCP/IP四层模型。 在OSI模型中我们将具有报文转发的网络节点叫做IS,即中间系统的意思,类似于TCP/IP模型中的路由器。 在OSI模型中我们将没有路由能力或者转发能力的设备叫做ES,即端系统的意思,类似于TCP/I…...
【Linux】用户权限
shell命令 1. Linux本质上是一个操作系统,但是一般的用户不能直接使用它,而是需要通过外壳程序shell,来与Linux内核进行沟通。 2. shell的简单定义:命令行解释器。主要包含以下作用: 将使用者的命令翻译给核心处理。将…...
晶振详解:原理、作用、种类、应用与选型要点
一、晶振的基本定义 晶振(Crystal Oscillator) 是利用石英晶体的压电效应产生稳定频率的电子元件,其核心功能是为数字系统提供高精度时钟信号。 核心公式: 串联谐振频率(fs) 1 / (2π√(L1C1)) ÿ…...
【数字图像处理】立体视觉基础(2)
相机标定 【1】相机标定的概念 相机参数:相机成像的几何模型的参数 相机标定:求解参数的过程 【2】相机标定的作用 (1)求出相机的内、外参数,以及畸变参数 (2)校正镜头畸变影响,…...
智能座舱测试内容与步骤
智能座舱的测试步骤通常包括以下环节: 1.测试环境搭建与准备 • 硬件需求分析:准备测试车辆、服务器与工作站、网络设备以及传感器和执行器模拟器等硬件设备。 • 软件需求分析:选择测试管理软件、自动化测试工具、模拟软件和开发调试工具等。…...
每日算法-250422
每日算法 - 250422 1561. 你可以获得的最大硬币数目 题目 思路 贪心 解题过程 根据题意,我们想要获得最大的硬币数目。每次选择时,有三堆硬币:最大的一堆会被 Alice 拿走,最小的一堆会被 Bob 拿走,剩下的一堆…...
XSS的应用
免责声明,本博客只是用来自身学习记录,不要运用里面的代码去进行违法犯罪行为。 XSS 首先需要知道的是xss误区,就是在不确定是否有XSS的情况下,不应该是直接上攻击payload,例如<script>alert(123)</script&…...
FastAPI WebSocket 聊天应用详细教程
项目简介 这是一个基于 FastAPI 和 WebSocket 实现的实时聊天应用,支持一对一聊天、离线消息存储等功能。 技术栈 后端:FastAPI (Python)前端:HTML、JavaScript、CSS通信:WebSocket认证:简单的 token 认证 项目结构…...
【C语言】动态内存的常见错误
前言: 在上章节中讲解了动态内存的概念和管理的核心函数。 在本章节继续为大家介绍动态内存的常见错误,让大家更好的理解运用。 补充:使用内存函数需要头文件<stdlib.h> 对NULL指针的解引用操作 当使用malloc、calloc或realloc等函…...
Missashe考研日记-day24
Missashe考研日记-day24 1 专业课408 学习时间:2h30min学习内容: 今天把剩下的两个经典同步问题和管程部分的课看了,然后做课后习题。这部分的重点在PV大题,很多很经典,不过第一轮不打算做大题,把选择题做…...
精益数据分析(13/126):洞察数据关系,灵活调整创业方向
精益数据分析(13/126):洞察数据关系,灵活调整创业方向 大家好!在创业和数据分析的探索之路上,每一次的学习都是成长的宝贵机会。今天,咱们接着深入学习《精益数据分析》,一起探索相…...
常用python爬虫框架介绍
文章目录 前言1. Scrapy2. BeautifulSoup 与 Requests 组合3. Selenium4. PySpider 前言 Python 有许多优秀的爬虫框架,每个框架都有其独特的特点和适用场景。以下为你详细介绍几个常用的 Python 爬虫框架: Python 3.13.2 安装教程(附安装包…...
HarmonyOS:网络HTTP数据请求
导读 场景介绍接口说明request接口开发步骤requestInStream接口开发步骤证书锁定预置应用级证书预置证书公钥哈希值JSON配置文件示例 场景介绍 通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法 接口说明 HTTP数据…...
CoinNexus Chain 推出泰利风暴,开启 Web3.0 智能金融元宇宙科技新时代
4月25日,CoinNexusChain 区块链正式推出开创性的“泰利风暴”(Terry Storm),再次展现了其前瞻性的视野和非凡的潜力。这标志着 CoinNexusChain 在 Web3.0 创新浪潮中迈出了重要一步。 Terry是一种创新的 RWA 金融激励机制&…...
编译opencv源码使得opencv-python获得gstreamer支持
我个人习惯在miniconda中使用python版本的opencv,使用pip进行安装时,默认的包并不会有gstreamer支持,我尝试过自己编译opencv-python,编出的包有各种各样的问题。最终还是决定自己从opencv仓库源码自行编译。 安装gstreamer apt…...
眼镜眨巴眨巴-一步几个脚印从头设计数字生命2——仙盟创梦IDE
import cv2 import mediapipe as mp import numpy as np import timemp_drawing mp.solutions.drawing_utils mp_face_mesh mp.solutions.face_mesh# 加载图片 image cv2.imread(wlzc.jpg) # image_height, image_width, _ image.shape# 初始化面部网格模型 with mp_face_…...
django之数据的翻页和搜索功能
数据的翻页和搜素功能 目录 1.实现搜素功能 2.实现翻页功能 一、实现搜素功能 我们到bootstrap官网, 点击组件, 然后找到输入框组, 并点击作为额外元素的按钮。 我们需要使用上面红色框里面的组件, 就是搜素组件, 代码部分就是下面红色框框出来的部分。 把这里的代码复制…...
linux复习
1.关于进程 1.1 概念 用户角度:进程是程序的一次执行实例,也就是正在运行的程序 内核角度:操作系统分配内存和cpu资源的实体 操作系统使用内核数据结构 程序的代码及数据 描述进程,Linux中对应的内核数据结构就是task_struct…...
Post-Processing PropertySource instance详解 和 BeanFactoryPostProcessor详解
PropertySourcesBeanFactoryPostProcessor详解 1. 核心概念 BeanFactoryPostProcessor 是 Spring 框架中用于在 BeanFactory 初始化阶段 对 Environment 中的 PropertySource 进行后处理的接口。它允许开发者在 Bean 创建之前 对属性源进行动态修改,例如添加、删除…...
go 编译的 windows 进程(exe)以管理员权限启动(UAC)
引言 windows 系统,在打开某些 exe 的时候,会弹出“用户账户控制(UAC)”的弹窗 “你要允许来自xx发布者的此应用对你的设备进行更改吗?” UAC(User Account Control,用户账户控制)是 Windows 操作系统中的…...
Elasticsearch性能优化实践
一、背景与挑战 基金研报搜索场景中,我们面临以下核心挑战: 数据规模庞大:单索引超500GB原始数据,包含300万份PDF/Word研报文档查询性能瓶颈:复杂查询平均响应时间超过10秒,高峰期CPU负载达95%存储…...
【Web API系列】Web Shared Storage API 深度解析:WindowSharedStorage 接口实战指南
前言 在当今 Web 应用日益复杂的背景下,跨页面数据共享与隐私保护已成为现代浏览器技术演进的重要命题。传统 Web 存储方案(如 Cookies、LocalStorage)在应对多维度用户特征存储、跨上下文数据共享等场景时,逐渐暴露出技术瓶颈与…...
Eureka、LoadBalance和Nacos
Eureka、LoadBalance和Nacos 一.Eureka引入1.注册中心2.CAP理论3.常见的注册中心 二.Eureka介绍1.搭建Eureka Server 注册中心2.搭建服务注册3.服务发现 三.负载均衡LoadBalance1.问题引入2.服务端负载均衡3.客户端负载均衡4.Spring Cloud LoadBalancer1).快速上手2)负载均衡策…...
智能体MCP 实现数据可视化分析
参考: 在线体验 https://www.doubao.com/chat/ 下载安装离线体验 WPS软件上的表格分析 云上创建 阿里mcp:https://developer.aliyun.com/article/1661198 (搜索加可视化) 案例 用cline 或者cherry studio实现 mcp server:excel-mcp-server、quickchart-mcp-server...
3小时速通Python-Python学习总部署、总预览(一)
目录 Python的关键字有哪些: 编辑 代码:1-5: 代码:6-10: 代码:11-15: 代码:16-20: 代码:21-25: 代码:26-27: Pyt…...
机器学习基础 - 分类模型之决策树
决策树 文章目录 决策树简介决策树三要素1. 特征的选择1. ID32. C4.53. CART2. 剪枝处理0. 剪枝的作用1. 预剪枝2. 后剪枝QA1. ID3, C4.5, CART 这三种决策树的区别2. 树形结构为何不需要归一化?3. 分类决策树与回归决策树的区别4. 为何信息增益会偏向多取值特征?4. 为何信息…...