c++设计算法按中序次序输出二叉树中各结点的值及其所对应的层次数且成员函数只有一个变量
要按照中序遍历的顺序输出二叉树中各节点的值及其所对应的层次数,可以使用递归的方式实现。首先,定义一个成员变量level,表示当前节点所在的层次数。然后,定义一个递归函数中序遍历二叉树,对于每个节点,先递归遍历左子树,然后输出节点的值和层次数,最后递归遍历右子树。
下面给出一个示例代码:
#include <iostream>
using namespace std;
struct TreeNode {
int value;
TreeNode* left;
TreeNode* right;
TreeNode(int val) : value(val), left(nullptr), right(nullptr) {}
};
class BinaryTree {
public:
void inOrderTraversal(TreeNode* root) {
level = 0;
inOrderTraversalHelper(root);
}
private:
int level;
void inOrderTraversalHelper(TreeNode* node) {
if (node == nullptr) {
return;
}
level++;
inOrderTraversalHelper(node->left);
cout << "Node value: " << node->value << ", Level: " << level << endl;
inOrderTraversalHelper(node->right);
level--;
}
};
int main() {
// 构造一个二叉树
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);
root->right->left = new TreeNode(6);
root->right->right = new TreeNode(7);
// 中序遍历输出节点值和层次数
BinaryTree tree;
tree.inOrderTraversal(root);
return 0;
}
输出结果为:
Node value: 4, Level: 1
Node value: 2, Level: 2
Node value: 5, Level: 2
Node value: 1, Level: 3
Node value: 6, Level: 3
Node value: 3, Level: 4
Node value: 7, Level: 4
``
原文地址: https://www.cveoy.top/t/topic/ixKi 著作权归作者所有。请勿转载和采集!