输出根节点到每个叶节点的路径
该算法用于遍历二叉树,并输出从根节点到所有叶节点的路径。路径以字符数组的形式存储,并在遍历过程中逐步构建。
1. 算法原理
该算法使用递归遍历二叉树,并在遍历过程中记录从根节点到当前节点的路径。具体步骤如下:
递归遍历:
- 从根节点开始,递归地遍历左子树和右子树。
- 在递归过程中,使用一个字符数组
path
来记录当前路径上的节点数据。
记录路径:
- 在访问每个节点时,将其数据存入
path
数组中,并增加路径长度pathlen
。 - 如果当前节点是叶节点(即没有左子节点和右子节点),则输出当前路径。
回溯:
- 当递归返回时,路径长度
pathlen
保持不变,以便在回溯时继续记录其他路径。
2. 算法步骤
初始化:
- 定义一个字符数组
path
用于存储路径。 - 定义一个变量
pathlen
用于记录当前路径的长度。
递归遍历:
- 从根节点开始,递归地遍历左子树和右子树。
- 在每次递归调用中:
- 将当前节点的数据存入
path[pathlen]
,并增加pathlen
。 - 检查当前节点是否为叶节点:
- 如果是叶节点,则输出当前路径。
- 否则,递归遍历左子树和右子树。
- 将当前节点的数据存入
回溯:
- 当递归返回时,
pathlen
保持不变,以便在回溯时继续记录其他路径。
3. 图示法表示步骤
假设我们有以下二叉树:
A
/ \
B C
/