C++ 算法:按中序遍历输出二叉树节点值及层级
#include
struct Node { int value; Node* left; Node* right; Node(int val) : value(val), left(nullptr), right(nullptr) {} };
void inOrderTraversal(Node* root, int level, std::ostream& out) { if (root == nullptr) { return; }
inOrderTraversal(root->left, level + 1, out);
out << "Node value: " << root->value << ", Level: " << level << std::endl;
inOrderTraversal(root->right, level + 1, out);
}
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);
// 按中序遍历输出二叉树中各结点的值及其所对应的层次数
inOrderTraversal(root, 1, std::cout);
// 释放二叉树的内存
delete root->left->left;
delete root->left->right;
delete root->right->left;
delete root->right->right;
delete root->left;
delete root->right;
delete root;
return 0;
}
// 输出结果: Node value: 4, Level: 2 Node value: 2, Level: 1 Node value: 5, Level: 2 Node value: 1, Level: 1 Node value: 6, Level: 2 Node value: 3, Level: 1 Node value: 7, Level: 2
原文地址: https://www.cveoy.top/t/topic/qe1d 著作权归作者所有。请勿转载和采集!