zoukankan      html  css  js  c++  java
  • 字符串转二叉树 leetcode C++ 实现

    struct TreeNode {
        int val;
        TreeNode* left;
        TreeNode* right;
    
        explicit TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    };
    
    
    void trimLeftTrailingSpaces(string &input) {
        input.erase(input.begin(), find_if(input.begin(), input.end(), [](int ch) {
            return !isspace(ch);
        }));
    }
    
    void trimRightTrailingSpaces(string &input) {
        input.erase(find_if(input.rbegin(), input.rend(), [](int ch) {
            return !isspace(ch);
        }).base(), input.end());
    }
    
    TreeNode* stringToTreeNode(string input) {
        trimLeftTrailingSpaces(input);
        trimRightTrailingSpaces(input);
        input = input.substr(1, input.length() - 2);
        if (input.empty()) {
            return nullptr;
        }
    
        string item;
        stringstream ss;
        ss.str(input);
    
        getline(ss, item, ',');
        auto root = new TreeNode(stoi(item));
        queue<TreeNode*> nodeQueue;
        nodeQueue.push(root);
    
        while (true) {
            TreeNode* node = nodeQueue.front();
            nodeQueue.pop();
    
            if (!getline(ss, item, ',')) {
                break;
            }
    
            trimLeftTrailingSpaces(item);
            if (item != "null") {
                int leftNumber = stoi(item);
                node->left = new TreeNode(leftNumber);
                nodeQueue.push(node->left);
            }
    
            if (!getline(ss, item, ',')) {
                break;
            }
    
            trimLeftTrailingSpaces(item);
            if (item != "null") {
                int rightNumber = stoi(item);
                node->right = new TreeNode(rightNumber);
                nodeQueue.push(node->right);
            }
        }
        return root;
    }
    
    
    void pre_order(TreeNode* root){
        if(root == nullptr) return;
        cout << root->val << ", ";
        pre_order(root->left);
        pre_order(root->right);
    }
    
  • 相关阅读:
    mock static方法
    Spring Boot 例一 实现jsonp接口
    安装Linux虚拟机到执行Java程序
    Mock单元测试
    通用分页请求返回类
    Collectors.groupingBy分组后的排序问题
    按权重分配任务
    Java正则表达式-捕获组
    远程抓取图片
    正则
  • 原文地址:https://www.cnblogs.com/theodoric008/p/9537607.html
Copyright © 2011-2022 走看看