首页 > 编程语言 >算法训练day17 LeetCode 110

算法训练day17 LeetCode 110

时间:2023-09-22 22:55:07浏览次数:34  
标签:result right return cur day17 110 path LeetCode left

算法训练day17 LeetCode 110.257.404

110平衡二叉树

题目

110. 平衡二叉树 - 力扣(LeetCode)

题解

代码随想录 (programmercarl.com)

  • 当子树已经不平衡,直接返回-1.平衡则返回子数高度进行更高树间的高度比较

    class Solution
    {
    public:
        int getHeight(TreeNode *node)
        {
            if (node == NULL)
            {
                return 0;
            }
            int left = getHeight(node->left);
            if (left == -1)
                return -1;
            int right = getHeight(node->right);
            if (right == -1)
                return -1;
            return abs(left - right) > 1 ? -1 : max(left, right) + 1;
        }
        bool isBalanced(TreeNode *root)
        {
            return getHeight(root) == -1 ? false : true;
        }
    };
    

257.二叉树的所有路径

题目

257. 二叉树的所有路径 - 力扣(LeetCode)

题解

代码随想录 (programmercarl.com)

  • 递归~回溯

  • 注意回溯,保证更换方向时能够正确记录路径

  • class Solution
    {
    private:
        void traversal(TreeNode *cur, vector<int> &path, vector<string> &result)
        {
            path.push_back(cur->val);
            if (cur->left == NULL && cur->right == NULL)
            {
                string sPath;
                for (int i = 0; i < path.size() - 1; i++)
                {
                    sPath += to_string(path[i]);
                    sPath += "->";
                }
                sPath += to_string(path[path.size() - 1]);
                result.push_back(sPath);
                return;
            }
            if (cur->left)
            {
                traversal(cur->left, path, result);
                path.pop_back();
            }
            if (cur->right)
            {
                traversal(cur->right, path, result);
                path.pop_back();
            }
        }
    
    public:
        vector<string> binaryTreePaths(TreeNode *root)
        {
            vector<int> path;
            vector<string> result;
            if (root == NULL)
                return result;
            traversal(root, path, result);
            return result;
        }
    };
    

标签:result,right,return,cur,day17,110,path,LeetCode,left
From: https://www.cnblogs.com/High-source/p/17723564.html

相关文章

  • 【LeetCode】2591. 将钱分给最多的儿童
    描述给你一个整数money,表示你总共有的钱数(单位为美元)和另一个整数children,表示你要将钱分配给多少个儿童。你需要按照如下规则分配:所有的钱都必须被分配。每个儿童至少获得1美元。没有人获得4美元。请你按照上述规则分配金钱,并返回最多有多少个儿童获得恰好8......
  • LeetCode3题学透链表初始化、查找、插入删除、逆置操作
    1.题目要求LeetCode203移除链表指定元素LeetCode707设计链表LeetCode206反转链表  这三个题目包含了链表的初始化、插入头尾结点、插入删除第n个结点,删除指定内容的结点、链表的逆置等,下面我将一一讲解并展示源代码。2.具体操作2.1LeetCode中链表的初始化  我下面所讲......
  • [leetcode] 10. 正则表达式匹配
    10.正则表达式匹配给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.'匹配任意单个字符'*'匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"无......
  • 【LeetCode】收集树中金币
    链接题目给你一个n个节点的无向无根树,节点编号从0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间有一条边。再给你一个长度为n的数组coins,其中coins[i]可能为0也可能为1,1表示节点i处有......
  • Leetcode刷题448.找到所有数组中消失的数字
    给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1,n] 内。请你找出所有在 [1,n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例1:输入:nums=[4,3,2,7,8,2,3,1]输出:[5,6]示例2:输入:nums=[1,1]输出:[2] 提示:n==nums.lengt......
  • Leetcode刷题283.移动零
    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出:[0] 提示:1<=nums.length<......
  • LeetCode53.最大子数组和
    要求最大连续子数组的和,可以这样考虑,比如现在我想求下标 i~j,i<j 这一范围内子数组的和,那么我可以分别先求出 0~i-1 范围和 0~j 范围两个子数组的和,可得Sum[i~j]=Sum[0~j]-Sum[0~i-1] ,这就是本题解法的核心思想。解法详细描述:先从下标0开始,遍历 nums 数组,求出到当前下标......
  • leetcode 22 括号生成
    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"]提示:1<=n<=8  //这种用例很可能就是递归代码:classSolut......
  • 【LeetCode】LCP 06. 拿硬币
    描述桌上有​​n​​​堆力扣币,每堆的数量保存在数组​​coins​​中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。示例输入:​​[4,2,1]​​输出:​​4​​解释:第一堆力扣币最少需要拿2次,第二堆最少需要拿1次,第三堆最少需要拿1次,......
  • 别踩雷!9月上半月FX110曝光黑平台65家
    黑平台层出不穷、数目庞大,切勿低估任何一家黑平台的杀伤力,因为一旦沾上,搭进去的都是真金白银!9月上半月,FX110网又曝光了65家黑平台,大家切莫踩雷!此次曝光的这65家黑平台,大都是无监管的黑平台,且网页制作粗糙。值得警惕的是,这65家黑平台中大部分网址仍可以正常打开,大家见到了请务必绕......