【初赛】二叉树性质和遍历
二叉树的性质与遍历
一、二叉树的基本性质
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
}
}
}
}

浙公网安备 33010602011771号