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

二叉树的性质与遍历

一、二叉树的基本性质

1. 定义

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

2. 关键性质
  • 性质1:\(\color{red}{在非空二叉树中,第 i 层最多有\ 2^{i-1}\ 个节点}\)
  • 性质2:\(\color{red}{深度为k的二叉树最多有\ 2^k - 1\ 个节点}\)
  • 性质3:\(\color{red}{对任何一棵非空二叉树,若叶子节点数为\ n_0,度为\ 2\ 的节点数为\ n_2,则\ 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] = true
  while (!q.empty()) {
    u = q.pop()
    for each edge(u, v) {
      if (!visited[v]) {
        q.push(v)
        visited[v] = true
      }
    }
  }
}
posted @ 2025-09-12 13:59  Slayer-WT!!!!!!!!  阅读(22)  评论(0)    收藏  举报