IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 二叉树的后序遍历【C和C++】 -> 正文阅读

[C++知识库]二叉树的后序遍历【C和C++】

二叉树的后续遍历就是根结点在最后遍历,顺序是左--右--根,如下图所示,先遍历左子树,1没有左结点,所以直接遍历右子树。看到右子树后,2是根结点,遍历它的左子树,返回3,因为2没有右子树,所以返回2,最后返回1。

?输入:root = [1,null,2,3]

输出:[3,2,1]

树的结点定义如下:

?struct?TreeNode?{

?? ? ?int?val;

?? ? ?struct?TreeNode?*left;

?? ? ?struct?TreeNode?*right;

??};

?递归的C语言代码如下:

void postorder(struct TreeNode* root, int* res, int* size){
    if(root == NULL)  return;  //当递归到根节点为空时,说明已经到了叶节点的子结点,直接返回
    postorder(root->left, res, size);  //递归左子树
    postorder(root->right, res, size);  //递归右子树
    res[(*size)++] = root->val;  //将根结点的值保存在res中
}
int* postorderTraversal(struct TreeNode* root, int* returnSize){
    int* res = malloc(sizeof(int) * 2000);  //res是结点返回的序列,这里先为res创建空间
    *returnSize = 0;
    postorder(root, res, returnSize);
    return res;
}

递归的C++代码如下:

class Solution {
public:
    void postorder(TreeNode *root, vector<int> &res) {
        if (root == nullptr) {
            return;
        }  //当递归到根节点为空时,说明已经到了叶节点的子结点,直接返回
        postorder(root->left, res);  //递归左子树
        postorder(root->right, res);  //递归右子树
        res.push_back(root->val);  //将根结点的值保存在res中
    }

    vector<int> postorderTraversal(TreeNode *root) {
        vector<int> res;  //创建容器res存放结点的值
        postorder(root, res);
        return res;
    }
};

用递归法来解决二叉树的中序遍历的空间复杂度是O(n),空间复杂度取决于递归的栈深度,当二叉树是一条链的时候栈的深度会达到O(n);时间复杂度也是O(n),这是很好理解的,因为每个结点都遍历了一遍且只遍历一遍。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:25:04  更:2022-08-06 10:25:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 23:24:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码