例2:用二叉树表示算术表达式 先序遍历结果 **/ABCDE 前缀表示法 E 中序遍历结果 A/B*C*D+E 中缀表示法 后序遍历结果 AB/C*D*E+ 一后缀表示法 层次遍历结果 +*E*D/CAB
11 + * A * / E D C B 先序遍历结果 + * * / A B C D E —前缀表示法 中序遍历结果 A / B * C * D + E —中缀表示法 后序遍历结果 A B / C * D * E + —后缀表示法 层次遍历结果 + * E * D / C A B 例2:用二叉树表示算术表达式
结点数据类型自定义 先序遍历算法 typedef struct node{ DLR(node) int data; if(root !=NULL)/非空二叉树 printf(%d',root->data);/防i▣D struct node *Ichild,*rchild DLR(root->lchild);/递归遍历左子树 node; DLR(root->rchil),/递归遍历右子树 node *root; return(0); 中序遍历算法 后序遍历算法 LDR(node *root) LRD (node) fif(root !=NULL) if(root !=NULL) LDR(root->lchild): LRD(); printf("%d",root->data): LRD(OO): LDR(root->rchild); printf(%d",root->data) return(0);} return(0);} 12
12 中序遍历算法 LDR(node *root) {if(root !=NULL) {LDR(root->lchild); printf(“%d”,root->data); LDR(root->rchild); } return(0);} 后序遍历算法 LRD (node *root) {if(root !=NULL) {LRD(root->lchild); LRD(root->rchild); printf(“%d”,root->data); } return(0);} 结点数据类型自定义 typedef struct node{ int data; struct node *lchild,*rchild; } node; node *root; 先序遍历算法 DLR( node *root ) {if (root !=NULL) //非空二叉树 {printf(“%d”,root->data); //访问D DLR(root->lchild); //递归遍历左子树 DLR(root->rchild); //递归遍历右子树 } return(0); }