C/C++ BM25二叉树的后序遍历

文章目录

前言

和前序遍历中序遍历一致,换个顺序就行。

详情参考C/C++ BM23 二叉树的前序遍历

详情参考C/C++ BM24 二叉树的中序遍历


题目

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

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

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

输入:

{ 1 , # , 2 , 3 } \{1,\#,2,3\} {1,#,2,3}

返回值:

3 , 2 , 1 \] \[3,2,1\] \[3,2,1

输入:

{ 1 } \{1\} {1}

返回值:

1 \] \[1\] \[1

解决方案一

1.1 思路阐述

后序遍历是是什么:

一棵树有根节点,根节点下面有左子树和右子树。左子树和右子树的根节点为这棵树根节点的左节点和右节点。

后序遍历的意思就是,左右根。先遍历左子树和右子树再遍历根节点。

1.2 源码

cpp 复制代码
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型vector
     */
    vector<int> temp;
    vector<int> postorderTraversal(TreeNode* root) {
        if(!root)//如果节点为空,则返回原数组
            return temp;
        postorderTraversal(root->left);//遍历当前子树的左节点
        postorderTraversal(root->right);//遍历当前子树的右节点
        temp.push_back(root->val);//不为空则表示遍历到这个节点,将这个节点的值添加到数组中
        return temp;

    }
};

解决方案二

这个我就不贴了,都一样的。顶多就是把函数功能单独拎出来。

总结

明白了前序和中序遍历,这个后序遍历也非常简单。

相关推荐
稚辉君.MCA_P8_Java13 分钟前
豆包 Java的23种设计模式
java·linux·jvm·设计模式·kubernetes
tanyongxi6614 分钟前
C++ 特殊类设计与单例模式解析
java·开发语言·数据结构·c++·算法·单例模式
遗憾皆是温柔16 分钟前
24. 什么是不可变对象,好处是什么
java·开发语言·面试·学习方法
midsummer_woo21 分钟前
基于springboot的IT技术交流和分享平台的设计与实现(源码+论文)
java·spring boot·后端
Peter(阿斯拉)32 分钟前
[Java性能优化]_[时间优化]_[字符串拼接的多种方法性能分析]
java·性能优化·stringbuilder·string·字符串拼接·stringbuffer·时间优化
fqbqrr33 分钟前
2508C++,支持rdma通信的高性能rpc库
c++·rpc
wearegogog12336 分钟前
C语言中的输入输出函数:构建程序交互的基石
c语言·开发语言·交互
liulilittle1 小时前
BFS寻路算法解析与实现
开发语言·c++·算法·宽度优先·寻路算法·寻路
喜欢吃燃面2 小时前
C++算法竞赛:位运算
开发语言·c++·学习·算法
草莓熊Lotso2 小时前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
开发语言·c++·经验分享·笔记·其他