后续遍历(Postorder traversal)c++语言

后续遍历(Postorder traversal)是二叉树的一种遍历方式,它的遍历顺序是先访问左子树,再访问右子树,最后访问根节点。下面是使用C++描述后续遍历的代码示例:

#include <iostream>
using namespace std;

// 二叉树节点的结构体
struct Node {
    int val;
    Node* left;
    Node* right;
    Node(int v) : val(v), left(NULL), right(NULL) {}
};

// 后续遍历函数
void postorderTraversal(Node* root) {
    if (root == NULL) {
        return;
    }
    postorderTraversal(root->left);    // 遍历左子树
    postorderTraversal(root->right);   // 遍历右子树
    cout << root->val << " ";          // 访问根节点
}

// 测试代码
int main() {
    // 构造一棵二叉树
    Node* root = new Node(1);
    root->left = new Node(2);
    root->right = new Node(3);
    root->left->left = new Node(4);
    root->left->right = new Node(5);
    root->right->left = new Node(6);
    root->right->right = new Node(7);

    // 后续遍历二叉树
    cout << "后续遍历结果:";
    postorderTraversal(root);
    cout << endl;

    return 0;
}

在上面的代码中,postorderTraversal 函数接收一个指向二叉树根节点的指针,遍历左子树、右子树和根节点的顺序符合后序遍历的要求。在函数中,当指针为空时,直接返回;否则,先遍历左子树,再遍历右子树,最后访问根节点并输出。在 main 函数中,我们构造了一棵二叉树,并调用 postorderTraversal 函数进行后序遍历,输出遍历结果。

特别提醒不熟悉c++语法的朋友

Node(int v) : val(v), left(NULL), right(NULL) {}

这段代码是 C++ 中结构体的构造函数定义。在这里,Node(int v) 表示定义了一个参数为 v 的构造函数,用于创建一个新的 Node 节点。构造函数的作用是初始化结构体的成员变量。

在这个构造函数中,通过初始化列表的方式,给节点的 val 赋值为 v,同时将左子树和右子树的指针初始化为 NULL(空指针)。这个构造函数的主要作用是让我们方便地创建新的 Node 节点,并将节点的值和左右子树指针初始化为默认值。

在实际的代码中,我们可以通过调用这个构造函数来创建一个新的 Node 节点,例如:

Node* node = new Node(10);

这个语句创建了一个新的 Node 节点,它的值为 10,左右子树指针都被初始化为 NULL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值