运维锅总详解系统启动流程

本文详细介绍Linux及Windows系统启动流程,并分析了它们启动流程的异同以及造成这种异同的原因。希望本文对您理解系统的基本启动流程有所帮助!

一、Linux系统启动流程

Linux 系统的启动流程可以分为几个主要阶段,从电源开启到用户登录。每个阶段的具体步骤如下:

  1. 电源开启(Power On)

    • 计算机加电,硬件开始初始化。
  2. BIOS/UEFI

    • BIOS(基本输入输出系统):在传统计算机中,执行自检(POST),初始化硬件,寻找启动设备。
    • UEFI(统一可扩展固件接口):在现代计算机中,执行更复杂的初始化,包括自检和系统配置。
  3. 硬件自检(POST)

    • BIOS POST:检查和初始化计算机硬件(如 CPU、内存、硬盘等)。
    • UEFI Initialization:执行硬件自检并加载 UEFI 驱动程序。
  4. 启动设备选择(Boot Device Selection)

    • BIOS/UEFI 查找并选择启动设备(硬盘、光盘、USB 等)。
  5. 加载引导加载程序(Load Bootloader)

    • BIOS:从硬盘的 MBR(主引导记录)读取 GRUB 的 Phase 1 部分。
    • UEFI:从 EFI 系统分区加载 EFI 引导加载程序。
  6. GRUB 引导加载程序

    • GRUB Phase 1:位于 MBR 中,执行基本引导操作并转移控制到 Phase 1.5。
    • GRUB Phase 1.5:提供对文件系统的支持,允许读取 GRUB 配置和内核映像。
    • GRUB Phase 2:显示引导菜单,加载内核和 initramfs。
  7. 加载内核和 initramfs(Load Kernel and initramfs)

    • GRUB Phase 2 加载操作系统内核和初始 RAM 文件系统(initramfs)。
  8. 内核初始化(Kernel Initialization)

    • 解压和初始化:内核解压并初始化硬件。
    • 挂载 initramfs:将 initramfs 挂载到文件系统中。
    • 设备初始化:检测和初始化系统硬件。
    • 切换根文件系统:从 initramfs 切换到实际的根文件系统。
  9. 启动 init 进程(Start init Process)

    • init:启动第一个用户空间进程,负责系统的进一步初始化。
  10. init 系统启动(init System Startup)

    • systemd:现代 Linux 系统通常使用 systemd 来管理系统服务,加载默认目标(例如 multi-user.target)。
    • SysV init:传统系统使用 SysV init,运行各类启动脚本。
  11. 启动系统服务(Start System Services)

    • 根据配置启动系统服务(如网络、日志、调度服务等)。
    • 挂载文件系统:确保系统必需的虚拟文件系统(如 /proc/sys/dev)已经挂载。
  12. 用户空间初始化(User Space Initialization)

    • 登录管理器:启动图形或文本登录管理器(如 GDM、LightDM、getty)。
    • 用户登录:用户输入凭据进行登录。
    • 启动用户会话:初始化用户会话环境。
    • 加载用户配置:加载用户的配置文件(如 .bashrc)。
    • 启动用户应用程序:启动用户的应用程序和服务。

Mermaid 图表示

以下 Mermaid 图表展示了 Linux 系统详细启动流程:

BIOS
UEFI
MBR
EFI
systemd
SysV init
Power On
BIOS/UEFI
POST
UEFI Initialization
Boot Device Selection
Load GRUB Phase 1
Load EFI Bootloader
GRUB Phase 1
GRUB Phase 1.5
GRUB Phase 2
Load Kernel and initramfs
Kernel Initialization
Mount initramfs
Device Initialization
Switch Root Filesystem
Start init Process
init Process PID 1
Load Default Target
Runlevel Scripts
Start System Services
Mount Filesystems
Launch Login Manager
User Login
Start User Session
Load User Configuration
Start User Applications

Mermaid 图解释

  • Power On:计算机加电。
  • BIOS/UEFI:系统固件初始化阶段。
  • POST/UEFI Initialization:执行硬件自检和初始化。
  • Boot Device Selection:选择启动设备。
  • Load Bootloader:从 MBR 或 EFI 系统分区加载引导加载程序。
  • GRUB Phase 1:从 MBR 中加载的引导阶段。
  • GRUB Phase 1.5:提供文件系统支持的引导阶段。
  • GRUB Phase 2:显示引导菜单并加载内核。
  • Load Kernel and initramfs:加载内核和初始 RAM 文件系统。
  • Kernel Initialization:内核初始化及设备检测。
  • Mount initramfs:挂载 initramfs。
  • Device Initialization:初始化系统硬件。
  • Switch Root Filesystem:切换到实际根文件系统。
  • Start init Process:启动 init 进程(PID 1)。
  • init Process:启动系统服务和设置。
  • systemd/SysV init:现代或传统的 init 系统管理。
  • Start System Services:启动系统服务并挂载文件系统。
  • Launch Login Manager:启动登录管理器。
  • User Login:用户登录系统。
  • Start User Session:启动用户会话环境。
  • Load User Configuration:加载用户配置文件。
  • Start User Applications:启动用户应用程序。

这个图表和解释帮助理解 Linux 系统从启动到用户登录的整个流程。

二、Windows系统启动流程

Windows 系统的启动流程包括多个阶段,从计算机加电到用户可以使用系统的完整过程。以下是详细的启动流程解释,以及相应的 Mermaid 图表示。

1. 电源开启(Power On)
  • 描述:计算机接通电源,硬件组件(如 CPU、内存、主板等)开始初始化。
2. BIOS/UEFI
  • BIOS(基本输入输出系统):传统的固件接口,负责执行硬件自检(POST),初始化系统硬件,寻找启动设备。
  • UEFI(统一可扩展固件接口):现代的固件接口,取代了传统的 BIOS,提供更多的功能和配置选项,如支持大容量硬盘(GPT)、快速启动和安全启动等。
3. 硬件自检(POST)
  • 描述:BIOS/UEFI 执行自检,检查系统硬件(CPU、内存、显卡等)是否正常工作,确保系统可以正常启动。
4. 启动设备选择(Boot Device Selection)
  • 描述:BIOS/UEFI 确定并选择用于启动操作系统的设备,如硬盘、光盘、USB 等。
5. 加载引导加载程序(Load Bootloader)
  • BIOS:从硬盘的 MBR(主引导记录)加载引导程序。
  • UEFI:从 EFI 系统分区加载 Windows Boot Manager(bootmgfw.efi)。
6. Windows Boot Manager(Bootmgr)
  • 描述:Windows Boot Manager 负责读取引导配置数据(BCD),决定启动哪个操作系统或引导选项。
7. 读取引导配置数据(Read BCD)
  • 描述:读取 BCD(Boot Configuration Data),这是一个包含操作系统引导配置信息的数据库。
8. 显示引导菜单(如果需要)(Display Boot Menu (if needed))
  • 描述:如果系统配置了多个操作系统或引导选项,显示引导菜单供用户选择。
9. 加载 Windows 内核(Load Windows Kernel)
  • 描述:加载 Windows 内核(ntoskrnl.exe),操作系统的核心组件。
10. 初始化硬件抽象层(HAL)(Initialize HAL)
  • 描述:初始化硬件抽象层(HAL),提供硬件平台的抽象接口。
11. 加载系统驱动程序(Load System Drivers)
  • 描述:加载必要的系统驱动程序,以支持系统硬件和设备。
12. 初始化设备(Initialize Devices)
  • 描述:初始化系统中的硬件设备,如存储设备、网络设备、输入设备等。
13. 启动系统服务(Start System Services)
  • 描述:启动系统服务和后台进程,确保操作系统功能正常运行。
14. 加载用户登录界面(Load User Login Interface)
  • 描述:加载用户登录界面(Winlogon),处理用户登录过程。
15. 用户登录(User Login)
  • 描述:用户输入凭据进行登录验证。
16. 启动用户会话(Start User Session)
  • 描述:开始用户会话,加载用户配置和桌面环境。
17. 加载资源管理器(Explorer.exe)(Load Explorer.exe)
  • 描述:启动 Windows 资源管理器,提供图形用户界面。
18. 加载用户配置(Load User Configuration)
  • 描述:加载用户的桌面设置和个人配置文件。
19. 启动用户应用程序(Start User Applications)
  • 描述:根据用户设置自动启动应用程序和服务,准备好用户使用。

Mermaid 图表示

以下是用 Mermaid 图表示的 Windows 系统启动流程:

BIOS
UEFI
MBR
EFI
Power On
BIOS/UEFI
POST
UEFI Initialization
Boot Device Selection
Load Bootloader
Load Windows Boot Manager -bootmgfw.efi-
Bootmgr
Read BCD
Display Boot Menu -if needed-
Load Windows Kernel -ntoskrnl.exe-
Initialize HAL
Load System Drivers
Initialize Devices
Start System Services -SCM-
Load User Login Interface -Winlogon-
User Login
Start User Session
Load Explorer.exe
Load User Configuration
Start User Applications

Mermaid 图解释

  • Power On:计算机加电,开始启动过程。
  • BIOS/UEFI:固件阶段,负责硬件自检和选择启动设备。
  • POST:执行硬件自检,确保系统组件正常工作。
  • UEFI Initialization:UEFI 环境下的硬件初始化。
  • Boot Device Selection:选择启动设备,准备加载引导加载程序。
  • Load Bootloader:根据环境加载相应的引导加载程序。
  • Bootmgr:Windows 引导管理器,负责读取引导配置。
  • Read BCD:读取引导配置数据,决定引导选项。
  • Display Boot Menu:如果配置了多个操作系统,显示引导菜单。
  • Load Windows Kernel:加载 Windows 内核,启动操作系统。
  • Initialize HAL:初始化硬件抽象层,为操作系统提供硬件抽象接口。
  • Load System Drivers:加载系统驱动程序,支持硬件设备。
  • Initialize Devices:初始化系统中的硬件设备。
  • Start System Services:启动系统服务和后台进程。
  • Load User Login Interface:加载用户登录界面,处理用户登录过程。
  • User Login:用户输入凭据进行登录验证。
  • Start User Session:开始用户会话,加载用户配置。
  • Load Explorer.exe:启动 Windows 资源管理器,提供图形用户界面。
  • Load User Configuration:加载用户的桌面设置和个人配置文件。
  • Start User Applications:启动用户应用程序,准备好用户使用。

这个图表和解释展示了从计算机加电到用户能够操作系统的整个启动过程,帮助理解 Windows 系统的启动机制。

三、Linux与Windows启动流程差异对比

Windows 和 Linux 系统的启动流程虽然有很多相似之处,但也存在一些显著的差异。这些差异主要来源于它们的设计目标、历史背景和系统架构。下面是对两者启动流程的比较分析。

相似之处
  1. 电源开启(Power On)

    • 两者都从计算机加电开始,硬件初始化。
  2. BIOS/UEFI

    • 无论是 Windows 还是 Linux,启动过程都依赖 BIOS 或 UEFI 进行硬件初始化和启动设备选择。
  3. 硬件自检(POST)

    • 在 BIOS/UEFI 阶段,都会执行硬件自检以确保所有关键硬件正常工作。
  4. 引导加载程序(Bootloader)

    • 两者都使用引导加载程序来加载操作系统。Windows 使用 Bootmgr,而 Linux 使用 GRUB、LILO 或其他引导加载程序。
  5. 操作系统内核加载

    • 引导加载程序将控制权交给操作系统内核,内核开始初始化系统和设备。
  6. 系统服务启动

    • 内核初始化后,都会启动系统服务和后台进程,以准备系统供用户使用。
  7. 用户界面加载

    • 最后,加载用户界面(Windows 启动 Explorer.exe,Linux 启动图形界面管理器如 GNOME、KDE)。
不同之处
  1. 引导加载程序

    • Windows:

      • 使用 Bootmgr(Windows Boot Manager),引导管理器从 EFI 系统分区或 MBR 中加载操作系统。
      • 在 UEFI 模式下,Bootmgr 被加载自 EFI 系统分区(ESP)。
    • Linux:

      • 使用多种引导加载程序,如 GRUB(Grand Unified Bootloader)、LILO(Linux Loader)等。
      • GRUB 有两个阶段:阶段 1(最小的引导代码)、阶段 1.5(包含文件系统支持)、阶段 2(完整的引导菜单和功能)。
  2. 内核加载

    • Windows:

      • ntoskrnl.exe(Windows 内核)和 HAL.dll(硬件抽象层)会被加载和初始化。
    • Linux:

      • 内核镜像通常为 vmlinuz,并由引导加载程序加载。
      • 内核初始化后,系统会启动 initsystemd(现代系统使用),负责启动系统服务和用户会话。
  3. 系统服务和进程管理

    • Windows:

      • 使用 Service Control Manager (SCM) 启动和管理系统服务。
      • Winlogon 负责用户登录和会话管理。
    • Linux:

      • 传统上使用 SysVinit,现代系统使用 systemdUpstart 来管理系统服务。
      • systemd 是现代 Linux 发行版的默认初始化系统和服务管理器,负责服务启动、系统状态管理等。
  4. 用户界面

    • Windows:

      • 加载 Explorer.exe,提供图形用户界面和桌面环境。
    • Linux:

      • 加载图形用户界面管理器,如 GNOMEKDEXfce 等。
      • 桌面环境的启动可以通过 display manager(如 GDMLightDM)完成。

总结

  • 引导加载程序:Windows 使用 Bootmgr,Linux 使用 GRUB 或其他引导加载程序。
  • 内核加载:Windows 内核加载的是 ntoskrnl.exe,Linux 内核是 vmlinuz。
  • 系统服务管理:Windows 使用 SCM 和 Winlogon,Linux 使用 SysVinit、systemd 或 Upstart。
  • 用户界面:Windows 加载 Explorer.exe,Linux 加载不同的图形桌面环境和显示管理器。

这些差异主要来源于操作系统的不同设计理念和历史背景。Windows 系统旨在提供集成的、易于使用的图形界面和一致的用户体验,而 Linux 系统提供更大的灵活性和自定义选项,以满足多样化的需求。

四、不同的设计理念和历史背景

Windows 和 Linux 系统在设计理念和历史背景上的不同,导致了它们在启动流程、系统架构和用户体验上的差异。下面详细解释这些不同的设计理念和历史背景。

1. 设计理念

Windows 系统
  1. 用户友好和一致性

    • 目标:提供一致的用户体验,注重用户友好性和易用性。
    • 集成度:将操作系统、用户界面、系统服务和应用程序集成在一个整体中,减少用户需要处理的技术细节。
    • 封闭性:Windows 是一个闭源系统,Microsoft 控制了系统的各个方面,包括引导过程、驱动程序、系统服务和用户界面。
    • 兼容性:注重向后兼容性,确保旧版应用程序在新版本系统上也能运行。
  2. 简化用户管理

    • 系统服务:使用 Service Control Manager(SCM)管理系统服务,提供简化的服务管理接口。
    • 图形界面:Windows 提供图形化的用户界面,用户通过图形界面进行系统管理和设置,而不是命令行。
Linux 系统
  1. 灵活性和自定义

    • 目标:提供灵活的配置选项,允许用户和管理员根据需求自定义和调整系统。
    • 模块化:系统组件和服务是模块化的,用户可以根据需要选择和安装不同的组件。
    • 开源:Linux 是开源的,允许用户查看、修改和分发源代码。这种开放性促进了社区的贡献和创新。
    • 多样性:存在多种发行版(如 Ubuntu、CentOS、Debian),每个发行版有自己的特点和目标用户群体。
  2. 命令行和脚本化管理

    • 系统服务:使用 systemd、SysVinit 或 Upstart 等不同的初始化系统来管理系统服务,这些工具提供了强大的命令行管理能力。
    • 图形界面:虽然 Linux 提供了多种图形用户界面(如 GNOME、KDE),但许多操作和管理任务仍然通过命令行完成,允许用户高度自定义系统行为。

2. 历史背景

Windows 系统
  1. 早期发展

    • 历史:Windows 系统最初由 Microsoft 开发,目标是为个人电脑提供一个用户友好的操作系统。Windows 1.0 于 1985 年发布。
    • 发展:随着 Windows 版本的不断升级,Microsoft 引入了新的功能和改进,同时保持了对旧版应用程序的兼容性。
  2. 企业导向

    • 商业模式:Windows 的商业模式主要是通过授权和销售许可证来盈利,Microsoft 控制了操作系统的每个方面,包括硬件兼容性和软件更新。
    • 封闭开发:微软保持了操作系统的封闭性,限制了用户对系统内部机制的访问和修改。
Linux 系统
  1. 开源运动

    • 历史:Linux 内核由 Linus Torvalds 于 1991 年发布,旨在创建一个自由、开源的操作系统内核。Linux 基于 Unix 的设计理念。
    • 发展:Linux 社区不断发展和改进操作系统,形成了众多不同的 Linux 发行版,支持各种硬件平台。
  2. 社区驱动

    • 开放开发:Linux 是一个开源项目,全球的开发者可以参与其中,修改和改进代码。这种开放性促进了快速的创新和功能扩展。
    • 多样性:Linux 的多样性体现在不同的发行版、桌面环境和管理工具上,用户可以根据自己的需求选择适合的版本和配置。

总结

设计理念

  • Windows 追求用户友好、一致性和商业化,采用封闭开发和集成式设计。
  • Linux 追求灵活性、自定义和开源,允许用户深入调整系统配置,支持各种不同的使用场景。

历史背景

  • Windows 的发展受到商业利益和用户需求的驱动,保持了对旧版应用程序的兼容性。
  • Linux 的发展受到开源运动和社区贡献的推动,注重创新和系统的自由定制。

这些不同的设计理念和历史背景解释了为什么 Windows 和 Linux 在启动流程、系统架构和用户体验上存在显著差异。

完。
在这里插入图片描述
希望对您有所帮助!关注锅总,及时获得更多花里胡哨的运维实用操作!

五、一个秘密

图片

锅总个人博客

https://gentlewok.blog.csdn.net/

锅总微信公众号

图片

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

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

相关文章

有一个日期(Date)类的对象和一个时间(Time)类的对象,均已指定了内容,要求一次输出其中的日期和时间

可以使用友元成员函数。在本例中除了介绍有关友元成员函数的简单应用外,还将用到类的提前引用声明,请读者注意。编写程序: 运行结果: 程序分析: 在一般情况下,两个不同的类是互不相干的。display函…

关于Java异常机制及finally关键字的详解

异常机制(Exception) 软件程序在运行过程中,非常可能遇到异常问题。常见的异常: 1、用户输入错误 2、设备错误 3、硬件问题,例如打印机关掉、服务器问题 4、物理限制:磁盘满了 Java是采用面向对象的方式来处理异常的。 处理过程…

基于Java的水果商品销售网站

1 水果商品销售网站概述 1.1 课题简介 随着电子商务在当今社会的迅猛发展,水果在线销售已逐渐演变为一种极为便捷的购物方式,日益受到人们的青睐。本系统的设计初衷便是构建一个功能完备、用户体验友好的水果销售平台,致力于为用户提供优质、…

【植物大战僵尸杂交版】获取+存档插件

文章目录 一、还记得《植物大战僵尸》吗?二、在哪下载,怎么安装?三、杂交版如何进行存档功能概述 一、还记得《植物大战僵尸》吗? 最近,一款曾经在15年前风靡一时的经典游戏《植物大战僵尸》似乎迎来了它的"文艺复…

渐开线花键测量学习笔记分享

大家好,继续渐开线花键的相关内容,本期是渐开线花键测量相关的学习笔记分享: 花键检测项目有花键大径和小径检验;内花键齿槽宽和外花键齿厚,以及渐开线终止圆 和起始圆直径检测;齿距累计误差 、齿形误差 、…

排序算法简述(第八jiang)

目录 排序 选择排序 O(n2) 不稳定:48429 归并排序 O(n log n) 稳定 插入排序 O(n2) 堆排序 O(n log n) 希尔排序 O(n log2 n) 图书馆排序 O(n log n) 冒泡排序 O(n2) 优化: 基数排序 O(n k) 快速排序 O(n log n)【分治】 不稳定 桶排序 O(n…

Mysql-常用函数及其用法总结

1、字符串函数 测试用例如下: 1.1 CONCAT() 将多个字符串连接成一个字符串。 SELECT CONCAT(first_name, , last_name) AS full_name FROM users; -- 期望结果:John Doe, Jane Smith, Michael Johnson 1.2 SUBSTRING() 提取子字符串 SELECT SUBSTR…

STM32-PWR和WDG看门狗

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. PWR1.1 PWR简介1.2 电源框图1.3 上电复位和掉电复位1.4 可编程电压监测器1.5 低功耗模式1.6 模式选择1.7 睡眠模式1.8 停止模式1.9 待机模式1.10 库函数 2. WDG看门狗2.1 WDG简介2.2 IWDG框图2.3 IWDG键寄存器2.4 …

13 学习总结:指针 · 其一

目录 一、内存和地址 (一)内存 (二)内存单元 (三)地址 (四)拓展:CPU与内存的联系 二、指针变量和地址 (一)创建变量的本质 (二…

ASRock Creator系列GPU:为AI推理及多GPU系统打造,采用16针电源接口的Radeon RX 7900系列显卡

ASRock 正在筹备推出专为人工智能推理和多GPU系统设计的AMD GPU——Creator系列显卡。这一系列显卡采用双槽位、吹风式设计,并配备16针电源连接器,首发产品包括基于Navi 31架构的AMD Radeon RX 7900XTX和RX 7900 XT型号。这些原属于WS系列的显卡最初在20…

机器学习与现代医疗设备的结合:革新医疗健康的未来

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 随着技术的不断进步,机器学习(Machine Learning, ML)在现代医疗设备中的应用正在改变着…

python基础语法 006 内置函数

1 内置函数 材料参考:内置函数 — Python 3.12.4 文档 Python 解释器内置了很多函数和类型,任何时候都能直接使用 内置函数有无返回值,是python自己定义,不能以偏概全说都有返回值 以下为较为常用的内置函数,欢迎补充…

什么是CTO?如何成为一名优秀的CTO?

一、什么是CTO? 首席技术官(CTO)是一位负责领导和管理企业技术战略的高级职务。CTO的主要职责包括规划技术战略、监督研发活动、领导技术团队等。 二、CTO的主要职责 首席技术官,即CTO,是企业中负责技术和研发的高级管…

Redies基础篇(一)

Redis 是一个高性能的key-value数据库。Redies支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的&#xff…

【ETABS】【RHINO】案例:Swallow to ETABS

文章目录 01. Swallow Overview总览1 LOAD:Defination of LoadCase、Response Combo2 SectionArea Section and Area Load(面截面定义与指定,面荷载指定)Frame Section with rebarattr and linear load(带钢筋属性框架…

下载,连接mysql数据库驱动(最详细)

前言 本篇博客,我讲讲如何连接数据库?我使用mysql数据库举例。 目录 下载对应的数据库jar 包 百度网盘 存有8.4.0版本压缩包:链接:https://pan.baidu.com/s/13uZtXRmuewHRbXaaCU0Xsw?pwduipy 提取码:uipy 复制这…

STM32-TIM定时器

本内容基于江协科技STM32视频内容,整理而得。 文章目录 1. TIM1.1 TIM定时器1.2 定时器类型1.3 基本定时器1.4 通用定时器1.4 高级定时器1.5 定时中断基本结构1.6 预分频器时序1.7 计数器时序1.8 计数器无预装时序1.9 计数器有预装时序1.10 RCC时钟树 2. TIM库函数…

前端面试题11(浅谈JavaScript深拷贝与浅拷贝)

在JavaScript中,数据的复制可以分为浅拷贝(Shallow Copy)和深拷贝(Deep Copy)。这两种拷贝方式主要区别在于如何处理对象中的嵌套对象。下面我会详细解释这两者的概念、区别,并提供相应的实现代码。 浅拷贝…

【机器学习实战】Datawhale夏令营:Baseline精读笔记2

# AI夏令营 # Datawhale # 夏令营 在原有的Baseline上除了交叉验证,还有一种关键的优化方式,即特征工程。 如何优化特征,关系着我们提高模型预测的精准度。特征工程往往是对问题的领域有深入了解的人员能够做好的部分,因为我们要…

链式二叉树oj题

1.输入k ,找第k层节点个数 int TreeKlevel(BTNode*root,int k) {if (root NULL) {return 0;}if (k 1) {return 1;}return TreeKlevel(root->left, k - 1)TreeKlevel(root->right, k - 1); } 在这里我们要确定递归子问题,第一个就是NULL时返回&…