二叉树遍历三招:前序中序后序

张开发
2026/4/8 2:07:54 15 分钟阅读

分享文章

二叉树遍历三招:前序中序后序
一、先解答上次的思考题问已经建好二叉树怎么按顺序把所有节点打印出来答用遍历—— 按照某种规则把每个节点访问一次且仅一次。最常用三种前序、中序、后序。二、今天学习目标掌握前序、中序、后序遍历记住口诀根在哪里就是什么序完整可运行代码递归最简单看图就能写出遍历序列三、三种遍历口诀超级好记给定一棵树根 / \ 左 右前序根→ 左 → 右中序左 →根→ 右后序左 → 右 →根一句话根在前面 前序根在中间 中序根在后面 后序四、示例树全文用这棵树1 / \ 2 3 / \ 4 5前序1 2 4 5 3中序4 2 5 1 3后序4 5 2 3 1五、完整代码递归实现最易懂#include stdio.h #include stdlib.h // 二叉树节点 struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right; }; // 创建节点 struct TreeNode* createNode(int val) { struct TreeNode* node (struct TreeNode*)malloc(sizeof(struct TreeNode)); node-data val; node-left NULL; node-right NULL; return node; } // 三种遍历 // 1. 前序根 → 左 → 右 void preOrder(struct TreeNode* root) { if (root NULL) return; printf(%d , root-data); preOrder(root-left); preOrder(root-right); } // 2. 中序左 → 根 → 右 void inOrder(struct TreeNode* root) { if (root NULL) return; inOrder(root-left); printf(%d , root-data); inOrder(root-right); } // 3. 后序左 → 右 → 根 void postOrder(struct TreeNode* root) { if (root NULL) return; postOrder(root-left); postOrder(root-right); printf(%d , root-data); } // 主函数测试 int main() { // 构建上图二叉树 struct TreeNode* root createNode(1); root-left createNode(2); root-right createNode(3); root-left-left createNode(4); root-left-right createNode(5); printf(前序遍历); preOrder(root); printf(\n中序遍历); inOrder(root); printf(\n后序遍历); postOrder(root); return 0; }六、运行结果前序遍历1 2 4 5 3 中序遍历4 2 5 1 3 后序遍历4 5 2 3 1七、新手必懂重点递归最简单考试 / 面试优先写递归遍历是一切树操作的基础查找、插入、删除、计算高度、求叶子数已知中序 前 / 后序可以唯一确定一棵二叉树面试常考八、今日小练习自己动手构建下面这棵树并写出三种遍历结果10 / \ 20 30 \ 40答案前序10 20 40 30中序20 40 10 30后序40 20 30 10九、明日预告二叉树层序遍历按行打印 求树的高度BFS 思想入门面试超高频。

更多文章