首页 > 编程语言 >代码随想录算法训练营第十七天| 110. 平衡二叉树 257. 二叉树的所有路径 404. 左叶子之和

代码随想录算法训练营第十七天| 110. 平衡二叉树 257. 二叉树的所有路径 404. 左叶子之和

时间:2024-03-22 10:55:25浏览次数:39  
标签:node right return 随想录 404 二叉树 null root left

110. 平衡二叉树
https://leetcode.cn/problems/balanced-binary-tree/description/

public boolean isBalanced(TreeNode root) {
        int balance = balance(root);
        return balance == -1 ? false : true;
    }
    public int balance(TreeNode node){
        if (node == null) return 0;
        int left = balance(node.left);
        if (left == -1) return -1;
        int right = balance(node.right);
        if (right == -1) return -1;
        return Math.abs(left - right) > 1 ? - 1 : Math.max(left,right) + 1;
    }

总结:需要用到左右孩子的高度去比对,所以后序,左右孩子有一个不是平衡的,就不用比了,要不就比左右孩子的差的绝对值,每次如果不是平衡,返回-1,是平衡,返回当前节点的高度。
257. 二叉树的所有路径
https://leetcode.cn/problems/binary-tree-paths/description/

public List<String> binaryTreePaths(TreeNode root) {
        List<String> list = new ArrayList<>();
        String s = String.valueOf(root.val);
        preorder(root,list,s);
        return list;
    }
    public void preorder(TreeNode node,List<String> list,String s){
        if (node.left == null && node.right == null){
            list.add(s);
            return;
        }
        if (node.left != null){
            StringBuilder stringBuilder = new StringBuilder(s);
            String leftPath = stringBuilder.append("->").append(node.left.val).toString();
            preorder(node.left,list,leftPath);
        }
        if (node.right != null){
            StringBuilder stringBuilder = new StringBuilder(s);
            String rightPath = stringBuilder.append("->").append(node.right.val).toString();
            preorder(node.right,list,rightPath);
        }
    }

总结:前序,慢慢来很轻松
404. 左叶子之和
https://leetcode.cn/problems/sum-of-left-leaves/description/

public int sumOfLeftLeaves(TreeNode root) {
        if (root == null) return 0;
        int leftValue = 0;
        if (root.left != null && root.left.left == null && root.left.right == null){
            leftValue = root.left.val;
        }
        return leftValue + sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right);
    }

标签:node,right,return,随想录,404,二叉树,null,root,left
From: https://www.cnblogs.com/jeasonGo/p/18088976

相关文章

  • 二叉树详解
    二叉树详解一:什么是树1:概念2:树的特点##3:树的一些重要概念二:二叉树1:二叉树的概念2:二叉树的特点3:特殊的二叉树:三:二叉树的性质四:二叉树的存储一:什么是树1:概念树是一种非线性的数据结构,它是由n个节点组成的一个具有层次关系的集合,把它叫做树的原因是因......
  • 代码随想录算法训练营第五十三天| ● 1143.最长公共子序列 ● 1035.不相交的线 ●
    最长公共子序列 题目链接:1143.最长公共子序列-力扣(LeetCode)思路:。classSolution{public:intlongestCommonSubsequence(stringtext1,stringtext2){vector<vector<int>>dp(text1.size()+1,vector<int>(text2.size()+1,0));for(inti......
  • 二叉树的深度优先遍历(力扣94,144,145)
    文章目录题目前知二叉树的遍历方式有什么?递归和迭代是什么?题解一、思路二、解题方法三、Code总结题目Problem:144.二叉树的前序遍历Problem:94.二叉树的中序遍历Problem:145.二叉树的后序遍历前知二叉树的遍历方式有什么?二叉树主要有两种遍历方式:......
  • 代码随想录算法训练营第五十三天 | 53. 最大子序和 动态规划,1035.不相交的线,1143.最
    53.最大子数组和 已解答中等 相关标签相关企业 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。  示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
    704.二分查找有顺序2.左右双指针通过中间位大小来判断指针移动难点:边界防止溢出错误:mid=left+(right-left)//2Complexity:O(log(n))classSolution:defsearch(self,nums:List[int],target:int)->int:#sortedlist#binary......
  • 236. 二叉树的最近公共祖先c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/structTreeNode*lowestCommonAncestor(structTreeNode*root,structTreeNode*p,structTreeNode*q){......
  • 257. 二叉树的所有路径c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*//***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/inttemp[400];voiddf......
  • 代码随想录算法训练营day29 | leetcode 491. 非递减子序列、46. 全排列、47. 全排列 I
    目录题目链接:491.非递减子序列-中等题目链接:46.全排列-中等题目链接:47.全排列II-中等题目链接:491.非递减子序列-中等题目描述:给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中可能含有重......
  • 【数据结构和算法初阶(C语言)】二叉树的顺序结构--堆的实现/堆排序/topk问题详解---二
     目录 ​编辑1.二叉树的顺序结构及实现1.1二叉树的顺序结构2堆的概念及结构3堆的实现3.1堆的代码定义3.2堆插入数据3.3打印堆数据3.4堆的数据的删除3.5获取根部数据3.6判断堆是否为空3.7堆的销毁 4.建堆以及堆排序 4.1堆排序---是一种选择排序4.2升......
  • 代码随想录第15天|二叉树的层序遍历
    二叉树的层序遍历102.二叉树的层序遍历-力扣(LeetCode)代码随想录(programmercarl.com)讲透二叉树的层序遍历|广度优先搜索|LeetCode:102.二叉树的层序遍历_哔哩哔哩_bilibili给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)......