文章
10
粉丝
40
获赞
2
访问
4.9k
链式存储(结构体:value值+左右指针)
#include <iostream>
#include <cstring>
#include <sstream>
using namespace std;
int cnt;
// 定义二叉树节点结构
struct TreeNode {
char val;
TreeNode *left;
TreeNode *right;
TreeNode(char x) : val(x), left(NULL), right(NULL) {}
};
// 通过前序遍历字符串构建二叉树
TreeNode* buildTree(const string &preorder, int &index) {
if (index >= preorder.length() || preorder[index] == '0') {
index++;
return nullptr;
}
TreeNode *node = new TreeNode(preorder[index]);
index++;
node->left = buildTree(preorder, index);
node->right = buildTree(preorder, index);
// 如果左右子树都为nullptr,那么当前节点是叶子节点
if (node->left == nullptr && node->right == nullptr)
{
cnt++;
}
return node;
}
// 前序遍历二叉树并输出结果
void preorderTraversal(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << " ";
pr...
登录后发布评论
暂无评论,来抢沙发