题解 | #二叉树的前序遍历#
二叉树的前序遍历
https://www.nowcoder.com/practice/5e2135f4d2b14eb8a5b06fab4c938635
首先上个二叉树~~~~~
前序遍历A-B-D-F-G-H-I-E-C
中序遍历F-D-H-G-I-B-E-A-C
后序遍历F-H-I-G-D-E-B-C-A
前序(根左右),中序(左根右),后序(左右根)
前序遍历:
从前序遍历中,我们确定了根结点为A,在从中序遍历中得出 F-D-H-G-I-B-E在根结点的左边,C在根结点的右边,那么我们就可以构建我们的二叉树的雏形。
![](https://uploadfiles.nowcoder.com/files/20220628/907177994_1656425125675/v2-117aade0ca15b451e9a542b6852631f0_720w.png)
那么剩下的前序遍历为B-D-F-G-H-I-E,中序遍历为F-D-H-G-I-B-E, B就是我们新的“根结点”,从中序遍历中得出F-D-H-G-I在B的左边,E在B的右边,继续构建
![](https://uploadfiles.nowcoder.com/files/20220628/907177994_1656425125689/v2-6b585a528009e0978254153dbb43ef70_720w.jpg)
那么剩下的前序遍历为D-F-G-H-I,中序遍历为F-D-H-G-I,D就是我们新的“根结点”,从中序遍历中得出F在D的左边,H-G-I在D的右边,继续构建
![](https://uploadfiles.nowcoder.com/files/20220628/907177994_1656425125716/v2-99457807b6951cd6a63a46c7a48ef0bb_720w.jpg)
那么剩下的前序遍历为G-H-I,中序遍历为H-G-I,G就是我们新的“根结点”,从中序遍历中得出H在G的左边,I在G的右边,继续构建
![](https://uploadfiles.nowcoder.com/files/20220628/907177994_1656425125718/v2-85c57eed2a58fd0bddcfd878ed2f13f4_720w.jpg)
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} }; class Solution { public: vector<int> preorderTraversal(TreeNode* root) { } };