后序遍历顺序为左→右→根,C++递归实现需先定义TreeNode结构,再通过递归函数依次访问左子树、右子树和根节点。

二叉树的后序遍历顺序是:先访问左子树,再访问右子树,最后访问根节点。在C++中,使用递归实现非常直观和简洁。
定义二叉树节点结构
首先需要定义二叉树的节点结构:
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
后序遍历递归函数实现
编写递归函数,按照“左 → 右 → 根”的顺序处理节点:
void postorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
postorderTraversal(root->left); // 遍历左子树
postorderTraversal(root->right); // 遍历右子树
std::cout << root->val << " "; // 访问根节点
}
完整示例代码
下面是一个完整的可运行示例:
立即学习“C++免费学习笔记(深入)”;
#includestruct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} }; void postorderTraversal(TreeNode* root) { if (root == nullptr) return; postorderTraversal(root->left); postorderTraversal(root->right); std::cout << root->val << " "; }
int main() { // 构建一个简单的二叉树 // 1 // / \ // 2 3 // / \ // 4 5 TreeNode* root = new TreeNode(1); root->left = new TreeNode(2); root->right = new TreeNode(3); root->left->left = new TreeNode(4); root->left->right = new TreeNode(5);
std::cout << "后序遍历结果: "; postorderTraversal(root); // 输出: 4 5 2 3 1 std::cout << std::endl; return 0;}
基本上就这些。只要理解了后序遍历的逻辑,递归实现非常自然。注意递归终止条件是节点为空,避免空指针访问。实际使用中,如果需要返回结果而不是直接输出,可以把std::cout换成将值存入一个vector引用参数中。











