之前为了找工作,大部分心思都在编程语言上,基本上忽略了计算机基础和数据结构,算法之类的知识(这就是非科班出身的短板啊!! )。最近在尽可能地补一下这短板,今天就二叉树的前序遍历,中序遍历和后序遍历写个总结,自我巩固。
1)前序遍历(也称先序遍历)
规则:若二叉树为空,则进行空操作;否则:
a.访问根节点;
b.先序遍历根的左子树;
c.先序遍历根的右子树。
算法:
void preOrder(BiTree root){
if(root == NULL) return;
else {
printf("%c",root->data);//访问根节点
preOrder(root->lchild);//先序遍历左子树
preOrder(root->rchild);
}
}
结果:ABDECF
2)中序遍历
规则:
若二叉树为空,则进行空操作;否则:
a.中序遍历根的左子树;
b.访问根节点;
c.中序遍历根的右子树。
如果:DBEAFC
3)后序遍历
规则:
若二叉树为空,则进行空操作;否则:
a.后序遍历根的左子树;
b.后序遍历根的右子树;
c.访问根节点。
如果:DEBFCA