您的位置:首页 > 汽车 > 新车 > 有没有免费的云服务器可以用_怎么找需要做推广的公司_电商网站定制开发_整合营销理论主要是指

有没有免费的云服务器可以用_怎么找需要做推广的公司_电商网站定制开发_整合营销理论主要是指

2025/9/6 17:25:31 来源:https://blog.csdn.net/m0_74091276/article/details/146070260  浏览:    关键词:有没有免费的云服务器可以用_怎么找需要做推广的公司_电商网站定制开发_整合营销理论主要是指
有没有免费的云服务器可以用_怎么找需要做推广的公司_电商网站定制开发_整合营销理论主要是指

目录

1 简介

2 前序遍历

2.1 问题描述

2.1.1 示例1

2.2 解题思路

2.3 代码实现 

3 中序遍历

3.1 问题描述

3.1.1 示例1

3.1.2 示例2

3.1.3 示例3

3.1.4 示例4

3.2 解题思路 

3.3 代码实现 

4 后序遍历

4.1 问题描述

4.1.1 示例1

4.1.2 示例2

4.2 解题思路

4.3 代码实现 

5 总结


1 简介

本文通过代码示例介绍了二叉树的三种深度优先遍历方法——前序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根),并使用递归方式实现。递归方法直观易懂,符合树的天然递归结构,每种遍历方式都遵循固定的访问顺序:前序遍历先访问根节点,再遍历左子树和右子树;中序遍历先遍历左子树,再访问根节点,最后遍历右子树;后序遍历则先遍历左右子树,最后访问根节点。本文提供清晰的 C++ 代码示例,并分析递归的工作原理,帮助读者深入理解二叉树的遍历过程及其应用。

2 前序遍历

2.1 问题描述

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

数据范围:二叉树的节点数量满足 1≤n≤100 1≤n≤100  ,二叉树节点的值满足 1≤val≤100 1≤val≤100  ,树的各节点的值各不相同

示例 1:

2.1.1 示例1

输入:

{1,#,2,3}

返回值:

[1,2,3]

2.2 解题思路

采用递归方式实现二叉树的前序遍历(根-左-右),并将遍历结果存储在 vector<int> 中。preorderTraversal 函数调用 preorder 递归函数,preorder 依次执行:访问当前节点(存入 result)→ 遍历左子树 → 遍历右子树。递归终止条件是当前节点为空(即 nullptr),此时直接返回。

2.3 代码实现 

    vector<int> preorderTraversal(TreeNode* root) {// write code herevector<int> result;preorder(root, result);return result;}void preorder(TreeNode* node, vector<int>& result){if(node == nullptr) return;result.push_back(node->val);preorder(node->left, result);preorder(node->right, result);}

3 中序遍历

3.1 问题描述

给定一个二叉树的根节点root,返回它的中序遍历结果。

数据范围:树上节点数满足 0≤n≤10000≤n≤1000,树上每个节点的值满足 −1000≤val≤1000−1000≤val≤1000
进阶:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)

3.1.1 示例1

输入:

{1,2,#,#,3}

返回值:[2,3,1]

3.1.2 示例2

输入:

{}

返回值:[]

3.1.3 示例3

输入:

{1,2}

返回值:[2,1]

3.1.4 示例4

输入:

{1,#,2}

返回值:[1,2]

3.2 解题思路 

采用递归方式实现二叉树的中序遍历(左-根-右),并将遍历结果存储在 vector<int> 中。inorderTraversal 函数调用 inorder 递归函数,inorder 依次执行:先递归遍历左子树 → 访问当前节点(存入 result)→ 递归遍历右子树。递归终止条件是当前节点为空(即 nullptr),此时直接返回。

3.3 代码实现 

    vector<int> inorderTraversal(TreeNode* root) {// write code herevector<int> result;inorder(root, result);return result;}void inorder(TreeNode* node, vector<int>& result){if(node == nullptr) return;inorder(node->left, result);result.push_back(node->val);inorder(node->right, result);}

4 后序遍历

4.1 问题描述

给定一个二叉树,返回他的后序遍历的序列。

后序遍历是值按照 左节点->右节点->根节点 的顺序的遍历。

数据范围:二叉树的节点数量满足 1≤n≤100 1≤n≤100  ,二叉树节点的值满足 1≤val≤100 1≤val≤100  ,树的各节点的值各不相同

样例图

4.1.1 示例1

输入:

{1,#,2,3}

返回值:

[3,2,1]
4.1.2 示例2

输入:

{1}

返回值:

[1]

4.2 解题思路

采用递归方式实现二叉树的后序遍历(左-右-根),并将遍历结果存储在 vector<int> 中。postorderTraversal 函数调用 postorder 递归函数,postorder 依次执行:先递归遍历左子树 → 递归遍历右子树 → 访问当前节点(存入 result)。递归终止条件是当前节点为空(即 nullptr),此时直接返回。

4.3 代码实现 

    vector<int> postorderTraversal(TreeNode* root) {// write code herevector<int> result;postorder(root, result);return result;}void postorder(TreeNode* node, vector<int>& result){if(node == nullptr) return;postorder(node->left, result);postorder(node->right, result);result.push_back(node->val);}

5 总结

本文介绍了二叉树的**前序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根)**三种深度优先遍历方法,并使用递归方式分别实现。递归方法利用二叉树的天然递归结构,使代码简洁直观,每种遍历方式都遵循固定的访问顺序。文章通过示例输入输出、解题思路解析和代码实现,帮助读者掌握不同遍历方法的应用。递归终止条件为当前节点为空(nullptr),以确保遍历完整执行。理解这三种遍历方式对于深入学习树结构及其算法至关重要,能够为后续的二叉树问题提供坚实基础。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com