剑指Offer之Java算法习题精讲二叉树与N叉树

 更新时间:2022年03月18日 10:29:24   作者:明天一定.  
跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化

题目一

 解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    StringBuffer sb = new StringBuffer();
    List<String> list = new ArrayList<String>();
    public List<String> binaryTreePaths(TreeNode root) {
        method(root);
        return list;
    }
    public void method(TreeNode root){
        if(root==null) return;
        int t = sb.length();
        sb.append(root.val);
        if(root.left==null&&root.right==null){
            list.add(sb.toString());
        }
        sb.append("->");
        method(root.left);
        method(root.right);
        sb.delete(t, sb.length());
    }
}

题目二

 解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int ans = 0;
    public int sumOfLeftLeaves(TreeNode root) {
        method(root,false);
        return ans;
    }
    public void method(TreeNode root,boolean flag){
        if(root==null) return;
        if(root.left==null&&root.right==null&&flag){
            ans+=root.val;
            return;
        }
        method(root.left,true);
        method(root.right,false);
    }
}

题目三

 解法

/*
// Definition for a Node.
class Node {
    public int val;
    public List<Node> children;
    public Node() {}
    public Node(int _val) {
        val = _val;
    }
    public Node(int _val, List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/
 
class Solution {
    public int maxDepth(Node root) {
        if(root==null){
            return 0;
        }
        int maxChildDepth = 0;
        for(int i = 0;i<root.children.size();i++){
            int childDepth = maxDepth(root.children.get(i));
            maxChildDepth = Math.max(maxChildDepth, childDepth);
        }
        return maxChildDepth+1;
    }
}

到此这篇关于剑指Offer之Java算法习题精讲二叉树与N叉树的文章就介绍到这了,更多相关 Java 二叉树内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文详解Java中的可变对象(Mutable)与不可变对象(Immutable)

    一文详解Java中的可变对象(Mutable)与不可变对象(Immutable)

    如何在 Java 中创建不可变对象?我以前以为所有对象都是不可变的,因为如果你改变一个 String 实例的内容,它总是会创建一个新的 String 对象并指向该对象,在本文中,我不仅将分享在 Java 中Immutable的步骤,还将讨论可变对象与不可变对象及其优缺点
    2023-11-11
  • 基于java math API 的详细解释说明

    基于java math API 的详细解释说明

    本篇文章是对java math API进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)

    IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)

    这篇文章主要介绍了IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Java多线程中wait、notify、notifyAll使用详解

    Java多线程中wait、notify、notifyAll使用详解

    这篇文章主要介绍了Java多线程中wait、notify、notifyAll使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • SpringBoot如何集成Kafka低版本和高版本

    SpringBoot如何集成Kafka低版本和高版本

    这篇文章主要介绍了SpringBoot如何集成Kafka低版本和高版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Java实现的质因数分解操作示例【基于递归算法】

    Java实现的质因数分解操作示例【基于递归算法】

    这篇文章主要介绍了Java实现的质因数分解操作,结合实例形式较为详细的分析了Java基于递归算法实现针对整数的质因数分解相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • java不用循环语句打印数组元素的实例

    java不用循环语句打印数组元素的实例

    下面小编就为大家带来一篇java不用循环语句打印数组元素的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Java并发之串行线程池实例解析

    Java并发之串行线程池实例解析

    这篇文章主要介绍了Java并发之串行线程池实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • JAVA截取字符串的几种常用方法

    JAVA截取字符串的几种常用方法

    这篇文章主要给大家介绍了关于JAVA截取字符串的几种常用方法, 在处理字符串的过程中有很多情况下会遇到需要截取字符串的情况,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Java中构造、生成XML简明教程

    Java中构造、生成XML简明教程

    这篇文章主要介绍了Java中构造、生成XML简明教程,本文通过dom4j包来完成,需要的朋友可以参考下
    2014-08-08

最新评论