D表示中间节点
L表示左节点
R表示右节点
前序遍历
中间节点在LR前面
DLR:前序遍历
1.输出A,左节点不为空
2.输出B,左节点不为空
3.输出D,左节点不为空
4.输出G,左节点为空,右节点为空
5.输出H,左节点为空,右节点为空
6.输出C,左节点不为空
7.输出E,左节点为空,右节点不为空
8.输出I,左节点为空,右节点为空
9.输出F
**总结:**先输出中间节点,开始输出左半部分,依次输出左节点,左节点为空输出右节点。开始输出右半部分,依次输出左节点,左节点为空输出右节点。
中序遍历
中间节点在LR中间
LDR:中序遍历
1.A有左子树B,B有左子树D,D有左子树G,G的左子树为空,输出G
2.G的右子树为空,输出D,此时D的左子树遍历完成
3.输出H,H的左子树,右子树为空。B的左子树遍历完成。
4.输出B,B的右子树为空,A的左子树遍历完成。
5.输出A,A的左子树遍历完成
6.开始遍历右子树
7.C有左子树E,E的左子树为空,输出E
8.E的右子树不为空,输出I,C的左子树遍历完成
9.输出C,C的右子树不为空,输出F
**总结:**先找到左半部分最左节点,依次输出父节点,右节点。
找到右半部分最左节点,依次输出父节点,右节点。
后序遍历
中间节点在LR后间
LRD:后序遍历
1.A有左子树B,B有左子树D,D有左子树G,G的左子树为空,右子树为空,输出G
2.D的右子树不为空,输出H
3.输出D,B的右子树为空,输出B
4.C有左子树E,E的左子树为空,右子树不为空,输出I
5.输出E,C有右子树F,输出F,输出C
7.输出A
**总结:**先找到左半部分最左节点,依次输出右节点,父节点。
找到右半部分最左节点,依次输出父节点,右节点。输出中间节点A。