下面是一个C++的例子,使用递归方式实现中序遍历二叉树,并输出每个节点所处的深度:

#include <iostream>

struct Node {
    int data;
    Node* left;
    Node* right;
    Node(int value) : data(value), left(nullptr), right(nullptr) {}
};

void inorderTraversal(Node* root, int depth) {
    if (root == nullptr) {
        return;
    }
    
    // 递归遍历左子树
    inorderTraversal(root->left, depth + 1);
    
    // 输出当前节点的值和深度
    std::cout << "Node value: " << root->data << ", depth: " << depth << std::endl;
    
    // 递归遍历右子树
    inorderTraversal(root->right, depth + 1);
}

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);
    
    // 中序遍历二叉树并输出节点深度
    inorderTraversal(root, 0);
    
    // 释放内存
    delete root->left->right;
    delete root->left->left;
    delete root->right;
    delete root->left;
    delete root;
    
    return 0;
}

运行以上代码,输出结果为:

Node value: 4, depth: 2
Node value: 2, depth: 1
Node value: 5, depth: 2
Node value: 1, depth: 0
Node value: 3, depth: 1

以上代码中,inorderTraversal函数实现了中序遍历二叉树的逻辑,通过depth参数记录当前节点的深度。在函数内部,先递归遍历左子树,然后输出当前节点的值和深度,最后递归遍历右子树。在main函数中,创建了一个简单的二叉树,并调用inorderTraversal函数进行遍历和输出。最后,需要手动释放创建的节点内存,以避免内存泄漏

c++中序遍历二叉树并表达出节点所处的深度

原文地址: http://www.cveoy.top/t/topic/ixIL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录