news 2026/5/29 5:11:34

【算法学习笔记】二叉树的前中后序遍历——递归的简单应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【算法学习笔记】二叉树的前中后序遍历——递归的简单应用

前置知识

【算法学习笔记】二叉树理论基础——关于二叉树的基础知识

递归相关知识请先自行了解

递归思路

写明白递归就是要搞明白1.每次要传入什么参数、返回什么参数。2.什么时候递归到头了该停止了3.每次递归要用传入的参数干什么。

我们要遍历获取每一个二叉树的值,所以我们一定要传入我们遍历到了二叉树的哪一个位置,不然我们没法判断现在在哪个位置,下一次要去哪。而我们的返回值自然也就是我们遍历到的二叉树的值。

当我们遍历到了二叉树的根节点,发现该节点后面没有其他节点了,没法继续往下遍历的时候,自然就该停止了。

每次递归传入的值也就是位置,我们需要用它获取当前位置的值,然后还要用它来确定下一个该去遍历谁了,还能不能继续遍历。

具体代码

前序遍历

TreeNode:二叉树的指针

val:二叉树节点的值

cur:当前位置

ret:结果数组

void traversal(TreeNode* cur, vector<int> &ret) { ret.push_back(cur->val); if(cur->left != 0) { traversal(cur->left, ret); } if(cur->right != 0) { traversal(cur->right, ret); } if(cur->left == 0 && cur->right == 0) { return; } } vector<int> preorderTraversal(TreeNode* root) { if(root == 0) { return {}; } vector<int> ret; traversal(root, ret); return ret; }

根据前中后序遍历的定义,我们可以发现无非就是中节点记录的时间不同。所以中序和后序遍历就是把ret.push_back(cur->val);移到traversal(cur->left, ret);和traversal(cur->right, ret);后面。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 22:11:12

网盘直链下载助手完整指南:如何免费获取八大网盘真实下载链接

网盘直链下载助手完整指南&#xff1a;如何免费获取八大网盘真实下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘…

作者头像 李华
网站建设 2026/3/31 22:01:21

抖音下载器技术解析:突破平台限制的高效内容获取方案

抖音下载器技术解析&#xff1a;突破平台限制的高效内容获取方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…

作者头像 李华
网站建设 2026/3/31 22:00:49

Playwright基础使用教程(附完整代码拆解)

Playwright基础使用教程&#xff08;附完整代码拆解&#xff09; 本文适合Playwright新手&#xff0c;将详细讲解Playwright的安装方法、核心优势&#xff0c;以及一段完整自动化代码的每一步知识点&#xff0c;通俗易懂&#xff0c;可直接复制学习&#xff0c;适配CSDN技术博客…

作者头像 李华