力扣145:递归之美 轻松掌握二叉树后序遍历
题目解读
二叉树的后序遍历是一种基础且重要的树遍历方式,其遍历顺序为:先递归地后序遍历左子树,然后递归地后序遍历右子树,最后访问根节点。这种遍历方式特别适合需要先处理子节点再处理父节点的场景,如内存释放、表达式树求值等。给定一个二叉树的根节点,我们需要按照这个顺序访问所有节点,并将它们的值存储在一个列表中返回。
解题思路与过程
用递归方法来快速实现后序遍历。定义一个成员变量ret来存储遍历结果,以及一个辅助函数postorder来完成实际的递归遍历。当遇到空节点时直接返回,否则先递归处理左子树,然后递归处理右子树,最后将当前节点的值加入结果列表。主函数postorderTraversal初始化遍历过程并返回最终结果。
代码实现与注释
class Solution { public: vector<int> ret; // 存储遍历结果的容器 // 递归后序遍历辅助函数 void postorder(TreeNode* root) { if(!root) // 递归终止条件:空节点 { return; } postorder(root->left); // 递归遍历左子树 postorder(root->right); // 递归遍历右子树 ret.push_back(root->val); // 最后访问当前节点(根) } // 主函数:初始化遍历过程并返回结果 vector<int> postorderTraversal(TreeNode* root) { postorder(root); // 开始递归遍历 return ret; // 返回遍历结果 } };
原创内容 转载请注明出处