首页 > 其他分享 >代随想录 第十八天 | ● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树 | 106,10

代随想录 第十八天 | ● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树 | 106,10

时间:2024-03-12 15:24:22浏览次数:24  
标签:count right return 106 二叉树 left null root 105

leetcode:513. 找树左下角的值 - 力扣(LeetCode)

思路:是找最深左下角的值,不是找左节点最深的值!!遍历深度,判断最大深度,存储后再与下一个相同深度的比较,先左后右,也就是从左到右的顺序来判断的,所以能找到树下左下角的值

class Solution {
     int maxdepth = 0;
     int result = 0;
    public int findBottomLeftValue(TreeNode root) {
        result =root.val;
        getmaxleft(root ,maxdepth);
        return result;
    }

    private void getmaxleft(TreeNode root, int depth) {

        if( root == null) return;
        //终止条件
        if( root.left == null && root.right == null){
            //判断是不是最深叶子节点
            if(depth > maxdepth){
                maxdepth = depth;
                result = root.val;
            }
        }
        //判断下一层左节点
        if(root.left != null){
            depth++;
            //回溯
            getmaxleft(root.left,depth);
            depth--;
        }
        //判断下一层右节点
        if(root.right != null){
            depth++;
            //回溯
            getmaxleft(root.right,depth);
            depth--;
        }
    }
}

 leetcode:112. 路径总和 - 力扣(LeetCode)

class Solution {
    public boolean hasPathSum(TreeNode root, int targetSum) {
        if(root == null) return false;
        int count = targetSum;
        return counttreepath(root,count - root.val);
    }

    private boolean counttreepath(TreeNode root, int count) {

        if(root.left == null && root.right == null && count == 0) return true;
        if(root.left == null && root.right == null) return  false;
        if(root.left != null){
            count-= root.left.val;
            //回溯
            if(counttreepath(root.left,count)) return true;
            count+= root.left.val;
        }
        if(root.right != null){
            count-= root.right.val;
            //回溯
            if(counttreepath(root.right,count)) return true;
            count+= root.right.val;
        }
        return false;

    }
}

 leetcode:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)

真不会啊哥

 

标签:count,right,return,106,二叉树,left,null,root,105
From: https://www.cnblogs.com/lengbo/p/18066083

相关文章

  • leetcode: 1261: 在受污染的二叉树中查找元素
    给出一个满足下述规则的二叉树:root.val==0如果 treeNode.val==x 且 treeNode.left!=null,那么 treeNode.left.val==2*x+1如果 treeNode.val==x 且 treeNode.right!=null,那么 treeNode.right.val==2*x+2现在这个二叉树受到「污染」,所有的 tree......
  • 第五节:二叉树相关(反转二叉树[递归/栈]、最大路径和)
    一.反转二叉树一.题目描述  给你一棵二叉树的根节点root,反转这棵二叉树,并返回其根节点。  示例:  leetcode:https://leetcode.cn/problems/invert-binary-tree/description/  难度:【简单】二.思路分析1-递归 1.首先要有递归结束的条件 2.先写......
  • 代码随想录 第17天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之
    leetcode:110.平衡二叉树-力扣(LeetCode)classSolution{publicbooleanisBalanced(TreeNoderoot){returngetblan(root)!=-1;}privateintgetblan(TreeNoderoot){//为空退出if(root==null)return0;//左节......
  • 代码随想录 第十六天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树
    leetcode:104.二叉树的最大深度-力扣(LeetCode)思路:递归判断每次左右节点的是否存在,存在自然加一,return的1就是这样,判断子节点的左右两端是否有节点,统计有的节点数量,也就是左右的高度classSolution{publicintmaxDepth(TreeNoderoot){//后序遍历if......
  • 代码随想录算法训练营day17 | leetcode 110. 平衡二叉树、257. 二叉树的所有路径、404
    目录题目链接:110.平衡二叉树-简单题目链接:257.二叉树的所有路径-简单题目链接:404.左叶子之和-简单题目链接:110.平衡二叉树-简单题目描述:给定一个二叉树,判断它是否是平衡二叉树示例1:输入:root=[3,9,20,null,null,15,7]输出:true示例2:输入:root=[1,2,2,3,3,null,nul......
  • 代码随想录 第十五天 | ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2 感
    leetcode:102.二叉树的层序遍历-力扣(LeetCode)思路:用队列长度控制弹栈的多少,不等于空时获取root,因为传了一个根肯定是1,接下来找左右节点,将根节点弹出,获取下一次的size,一直到空。。。//102.二叉树的层序遍历classSolution{publicList<List<Integer>>resList=newA......
  • Hi1102A和Hi1105模块在远距离无线图传领域的选型浅析
    Hi1102A和Hi1105V500都是属于海思旗下的两款WIFI+BT+GNSS+FM四功能一体(江湖俗称四合一)高性能方案,应该可以推出,这个原本是在手机方案集成使用的,本身海思有视频安防主控HI315X系列平台,如果搭配上自己的无线phy芯片,一体化集成的性能应该就完美,于是有了远距离无线图传模块化集成的......
  • CF1066E 题解
    Solution首先不难想到计算\(a\)的每一位对答案产生的贡献,然后题目告诉我们\(b\)每次会往右移一位,然后结合样例可以发现:对于\(a\)的第\(i\)位,能与其产生贡献的条件是:\(a_i=1\)且\(b_j=1(i\leqj)\),对答案的贡献不难想出即为\(2^{i-1}\times\sum\limits_{j=i}^{m}b_j......
  • CF1066E Binary Numbers AND Sum 题解
    分析因为\(a\)是一直没有改变的,移动的只有\(b\),所以从\(a\)的每一位的贡献入手。对于\(a\)中的从低到高第\(i\)位,其对应的十进制值是\(a_{n-i+1}\times2^{i-1}\)。注意到\(b\)是每次右移一位的,所以在\(b\)中能与\(a_{n-i+1}\)匹配的都是在下标区间\([1,m-i+1]......
  • 二叉树中的最大路径和
    124.二叉树中的最大路径和二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root......