前序遍历
逻辑
前序遍历又称深度优先遍历。
中左右
输出abdhiejcfg,先打印左孩子,打到底后再平层打印右孩子。
实现
先打印中即树根,因遍历是以最左开始,最右结束,所以可以通过递归的思想进行调用:
void PreOrder(TreeP tree){
if(tree!=NULL){
printf("%c",tree->data);
PreOrder(tree->Lchild);
PreOrder(tree->Rchild);
}
}
abdhiejcfg
中序遍历
逻辑
左中右(踩扁了)
hdibjeafcg
实现
先左到底再开始左中右
void InOrder(TreeP tree){
if(tree!=NULL){
InOrder(tree->Lchild);
printf("%c",tree->data);
InOrder(tree->Rchild);
}
}
后序遍历
逻辑
前后中
hidjebfgca
实现
先左到底,再右到中:
void PostOrder(TreeP tree){
if(tree!=NULL){
PostOrder(tree->Lchild);
PostOrder(tree->Rchild);
printf("%c",tree->data);
}
}
hidjebfgca
评论