• 988. 从叶结点开始的最小字符串


     

    思路
    难度中等

    给定一颗根结点为 root 的二叉树,树中的每一个结点都有一个 [0, 25] 范围内的值,分别代表字母 'a' 到 'z'

    返回 按字典序最小 的字符串,该字符串从这棵树的一个叶结点开始,到根结点结束

    注:字符串中任何较短的前缀在 字典序上 都是 较小 的:

    • 例如,在字典序上 "ab" 比 "aba" 要小。叶结点是指没有子结点的结点。 

    节点的叶节点是没有子节点的节点。

    示例 1:

    输入:root = [0,1,2,3,4,3,4]
    输出:"dba"
    

    示例 2:

    输入:root = [25,1,3,1,3,0,2]
    输出:"adz"
    

    示例 3:

    输入:root = [2,2,1,null,1,0,null,0]
    输出:"abc"
    
     
     
     
     
     
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
    public:
        string res;
        void dfs(TreeNode* root,string& path) {
            if (root != nullptr && root->left == nullptr && root->right == nullptr) {
                path+=(root->val+'a');
                // 不断更新答案
                reverse(path.begin(),path.end());
                if(res.empty() || path<res)res=path;
                // 撤销操作
                reverse(path.begin(),path.end());
                path.pop_back();
                return;
            }
            if (root->left != nullptr) {
                path+=(root->val+'a');
                dfs(root->left,path);
                path.pop_back(); 
            }
            if (root->right != nullptr) {
                path+=(root->val+'a');
                dfs(root->right,path);
                path.pop_back(); 
            }
        }
        string smallestFromLeaf(TreeNode* root) {
            string aa;
            dfs(root,aa);
            return res;
        }
    };
  • 相关阅读:
    【Red Hat Linux基础】 磁盘分区详细教程
    分区间统计sql、删除重复数据
    sql 建立索引之前计算区分度
    jvm调优
    最短路径-迷宫类
    comparable and comparator 比较
    刷题之Implement strStr()、Climbing Stairs
    对线程池简单理解
    hash表系列(转)
    对于AVL树和红黑树的理解
  • 原文地址:https://www.cnblogs.com/zle1992/p/16581495.html
Copyright © 2020-2023  润新知