首页 > 其他分享 >day17 110

day17 110

时间:2022-10-08 11:22:56浏览次数:40  
标签:right return int day17 110 null root left

110平衡二叉树

class Solution {
    public boolean isBalanced(TreeNode root) {
        return (getHeight(root)!=-1);    //返回值是一个int 类型 左右子树的最大高度
        
    }
    public int getHeight(TreeNode root){
        if(root==null) return 0;     //1.递归终止条件 以及处理逻辑
		
        int leftlength=getHeight(root.left);  //递归单层处理逻辑
        if(leftlength==-1) return -1;
        int rightlength=getHeight(root.right);
        if(rightlength==-1) return -1;
        if(Math.abs(leftlength-rightlength)>1) return -1;
        return Math.max(leftlength-rightlength)+1;
    }
} 

二叉树的所有路径

class Solution {   //迭代法
    public List<String> binaryTreePaths(TreeNode root) {

        Stack<Object> stack=new Stack<>();
        List<String> result=new ArrayList<>();
        if(root==null){
            return result;
        }
        stack.push(root);               
        stack.push(root.val+"");    
        while(!stack.isEmpty()){
            String path = (String)stack.pop();    //利用一个栈来存遍历的节点和->,节点值
            TreeNode node=(TreeNode)stack.pop();
            if(node.left==null&&node.right==null){   //当遇到根节点,则遍历完一条路 ,则path加入result
                result.add(path);
            }
            
            if(node.right!=null){
                stack.push(node.right);
                stack.push(path+"->"+node.right.val);
            }
            if(node.left!=null){       //如果不是根节点 将他的左孩子或者右孩子先存入栈里
                stack.push(node.left);
                stack.push(path+"->"+node.left.val); //path包含当前节点的元素值
            }
        }
        return result;
    }
}
class Solution {   //递归法
    public List<String> binaryTreePaths(TreeNode root) {
        List<Integer> paths=new ArrayList<>();
        List<String>    res=new ArrayList<>();
        if(root==null) return res;
        traversal(root,paths,res);
        return res;

    }
    private void traversal(TreeNode root,List<Integer> paths,List<String> res){
        paths.add(root.val);
        if(root.left==null&&root.right==null){    //1:确定终止条件:当遇到叶子节点时结束
            StringBuilder sb=new StringBuilder();  //终止同时  的操作:   把paths里面保存的放入stringbuilder 加上箭头,组成一条路径
            for(int i=0;i<paths.size();i++){
                sb.append(paths.get(i));
                if(i!=paths.size()-1){
                    sb.append("->");
                }               
            }
            res.add(sb.toString());   //最后把这条路 加到res中
            return;                     //2:返回的就是res数组
        }

        if(root.left!=null){                //3:确定本次递归应该做什么
            traversal(root.left,paths,res);    //这一级的递归  应该做的是:递归左孩子和右孩子
            paths.remove(paths.size()-1);          //但是因为是求所有的路劲  所以  在递归左右孩子时候要回溯
        }
        if(root.right!=null){
            traversal(root.right,paths,res);
            paths.remove(paths.size()-1);
        }
    }
}

404 左叶子之和

class Solution {
    public int sumOfLeftLeaves(TreeNode root) {
        int sum=0;
        
        return addLeft(root);
    }
    public int  addLeft(TreeNode root){
        if(root==null) return 0; //1:终止条件
        int sum=0;
        int sumAll=0;
        int sumLeft=0;
        int sumright=0;
        if(root.left!=null) sumLeft=addLeft(root.left);   //2本次递归操作逻辑
        if(root.right!=null) sumright=addLeft(root.right);
        if(root.left!=null&&root.left.left==null&&root.left.right==null){// 左孩子是叶子节点  则保存sum
            sum=root.left.val;
        }
        sumAll=sum+sumLeft+sumright;
        return sumAll;               //3返回值
    }
}

标签:right,return,int,day17,110,null,root,left
From: https://www.cnblogs.com/wdnmdp/p/16768367.html

相关文章

  • MUR1100-ASEMI轴向快恢复二极管MUR1100
    编辑:llMUR1100-ASEMI轴向快恢复二极管MUR1100型号:MUR1100品牌:ASEMI封装:DO-41特性:快恢复二极管正向电流:1A反向耐压:1000V恢复时间:50ns引脚数量:2芯片个数:1芯片尺寸......
  • 工业物联网网关BL110网口采集PLC三菱FX3U操作步骤
    网口支持采集三菱Q系列(Q03UDE,Q04UDEH,Q06UDEH,Q10UDEH,Q13UDEH,Q20UDEH,Q26UDEH,Q002UD)、L系列(L02,L26-BT)、FX5U系列。WAN口和LAN口都可以采集三菱PLC,可以直连......
  • 工业物联网网关BL110网口采集PLC三菱FX3U操作步骤
    网口支持采集三菱Q系列(Q03UDE,Q04UDEH,Q06UDEH,Q10UDEH,Q13UDEH,Q20UDEH,Q26UDEH,Q002UD)、L系列(L02,L26-BT)、FX5U系列。WAN口和LAN口都可以采集三菱PLC,可以直......
  • 代码随想录训练营|Day 17|110,257,404
    110.BalancedBinaryTreeGivenabinarytree,determineifitisheight-balanced.Forthisproblem,aheight-balancedbinarytreeisdefinedas:abinarytre......
  • 1110 区块反转——25分
    给定一个单链表L,我们将每K个结点看成一个区块(链表最后若不足K个结点,也看成一个区块),请编写程序将L中所有区块的链接反转。例如:给定L为1→2→3→4→5→6→7→8,K为......
  • POJ 2110 Mountain Walking(二分 枚举 BFS)
    POJ2110MountainWalking(二分枚举BFS)题目:​ 给出一张\(n*n(n\le100)\)的地图,每个点都有一个点权\((val\le110)\),可以任意选择路径,请问从(1,1)走到(n,n)的路......
  • 1108 String复读机——20分
    给定一个长度不超过10^4的、仅由英文字母构成的字符串。请将字符重新调整顺序,按StringString....(注意区分大小写)这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一......
  • 1109 擅长C——20分
    当你被面试官要求用C写一个“HelloWorld”时,有本事像下图显示的那样写一个出来吗?输入格式:输入首先给出26个英文大写字母A-Z,每个字母用一个7×5的、由C和.组......
  • 1105 链表合并——25分
    给定两个单链表L1=a1→a2→⋯→an−1→an和L2=b1→b2→⋯→bm−1→bm。如果n≥2m,你的任务是将⽐较短的那个链表逆序,然后将之并⼊⽐较⻓的那个链表,得到⼀个形如a1→a2......
  • 1106 2019数列——15分
    把2019各个数位上的数字2、0、1、9作为一个数列的前4项,用它们去构造一个无穷数列,其中第n(>4)项是它前4项之和的个位数字。例如第5项为2,因为2+0+1+9=12,个位数是......