文章

10

粉丝

22

获赞

2

访问

4.3k

头像
二叉树的建立和遍历 题解:
P1109 同济大学机试题
发布于2024年8月12日 23:22
阅读数 369

链式存储(结构体: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...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发