这些前中后是相对于父节点而言的 前序就是先访问父节点,再遍历左子树,后遍历右子树——父节点在最前 中序就是先遍历左子树,再访问父节点,后遍历右子树——父节点在中间 后序就是先遍历左子树,再遍历右子树,后访问父节点——父节点在最后 对于代码来说,用递归很方便实现 void preOrder(Tree *t) { //前序 if (!t) return; printf(“%d”, t->val); //先访问父节点 preOrder(t->left); //再递归遍历左子树 preOrder(t->right);//最后递归遍历右子树 } void inOrder(Tree *t) { //中序 if (!t) return; inOrder(t->left); //先递归遍历左子树 printf(“%d”, t->val); //再访问父节点 inOrder(t->right);//最后递归遍历右子树 } void postOrder(Tree *t) { //中序 if (!t) return; postOrder(t->left); //先递归遍历左子树 postOrder(t->right);//再递归遍历右子树 printf(“%d”, t->val); //最后访问父节点 }
65,189
社区成员
250,526
社区内容
加载中
试试用AI创作助手写篇文章吧