当前位置: 首页 > news >正文

【初赛】二叉树性质和遍历 - Slayer

二叉树的性质与遍历

一、二叉树的基本性质

1. 定义

二叉树是每个节点最多有两个子树的树结构,子树分为左子树和右子树,具有顺序性

2. 关键性质
  • 性质1:在非空二叉树中,第 \(i\) 层最多有 \(2^{i-1}个\)节点
  • 性质2:深度为k的二叉树最多有 \(2^k - 1\) 个节点
  • 性质3:对任何一棵非空二叉树,若叶子节点数为 \(n_0\),度为 2 的节点数为 \(n₂\),则 \(n_0 = n_2 + 1\)
  • 性质4:具有 n 个节点的完全二叉树深度为\(\lfloor \log_2 n\rfloor + 1\)
  • 性质5:完全二叉树中节点编号规律(根节点编号为1):
    • 若节点 i 有左孩子,则左孩子编号为 \(2i\)
    • 若节点 i 有右孩子,则右孩子编号为 \(2i+1\)
    • 若节点 i 有父节点,则父节点编号为 \(\lfloor \frac{i}{2} \rfloor\)

二、二叉树的遍历方式

1. 深度优先遍历(DFS)
  • 前序遍历(根 - 左 - 右)
  • 中序遍历(左 - 根 - 右)
  • 后序遍历(左 - 右 - 根)
2. 广度优先遍历(BFS)- 层次遍历

遍历顺序:按层次依次访问各节点,同一层次从左到右

bfs(s) {q = new queue()q.push(s), visited[s] = truewhile (!q.empty()) {u = q.pop()for each edge(u, v) {if (!visited[v]) {q.push(v)visited[v] = true}}}
}
http://www.rkmt.cn/news/3013.html

相关文章:

  • 详细解析苹果iOS应用上架到App Store的完整步骤与指南
  • 如何使用 OCR 提取扫描件 PDF 的文本(Python 实现) - E
  • WeakMap 应用场景与示例
  • 使用 conda 懒加载的方式减少 PowerShell 的启动时间
  • 深入 Spring MVC 底层:从 DispatcherServlet 到自定义组件的全链路解析 - 实践
  • podman 替代docker
  • m1芯片装windows系统使用感受
  • 硬件内在函数
  • 202205_宁波市赛_DocDocDoc
  • DP题
  • Android(Kotlin)+ ML Kit:移动端英文数字验证码识别实战
  • “人工智能+”的坚硬内核,边缘地带的“数字火种”:大模型如何烧出一片新天地
  • PHP启动报错:liboing.so.5:cannot op如何处理?
  • 时空倒流 Time - 题解
  • Voice Agent 全球开发者比赛,TEN Dev Challenge 2025 等你来战!
  • 第九届交通工程与运输系统国际学术会议(ICTETS 2025)
  • 小红书开源 FireRedTTS-2;全栈开源应用+嵌入式+电路设计:BUDDIE AI 语音交互方案丨日报
  • 设计模式-外观模式 - MaC
  • 豆包P图大更新,网友们已经玩嗨了。
  • 2025年金融行业API安全最佳实践:构建纵深防御体系
  • 怎样在 Salesforce Flow 中获取当前 Salesforce 组织的 URL
  • reLeetCode 热题 100-3 最长连续序列扩展 排序算法 - MKT
  • 11111
  • 阿里云微服务引擎 MSE 及 API 网关 2025 年 8 月产品动态
  • TIA Portal中S7-1500F CPU与ET200SP安全模块的配置例程(转载)
  • Linux的运行模式
  • 洛谷P2490 [SDOI2011] 黑白棋
  • 传统软件部署的痛点
  • CF19E Fairy
  • 鸿蒙应用开发从入门到实战(三):第一个鸿蒙应用