• leetcode刷题笔记一百零四题 二叉树的最大深度


    leetcode刷题笔记一百零四题 二叉树的最大深度

    源地址:104. 二叉树的最大深度

    问题描述:

    给定一个二叉树,找出其最大深度。

    二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

    说明: 叶子节点是指没有子节点的节点。

    示例:
    给定二叉树 [3,9,20,null,null,15,7],

    3

    /
    9 20
    /
    15 7
    返回它的最大深度 3 。

    /**
    *本题亦可分为递归法和迭代法
    */
    //递归法
    /**
     * Definition for a binary tree node.
     * class TreeNode(var _value: Int) {
     *   var value: Int = _value
     *   var left: TreeNode = null
     *   var right: TreeNode = null
     * }
     */
    object Solution {
        def maxDepth(root: TreeNode): Int = {
            //当前结点为空,则返回0
            if (root == null) return 0、
            //否则返回左右子树的max高度+1
            return 1 + Math.max(maxDepth(root.left), maxDepth(root.right))
        }
    }
    
    //迭代法 基于BFS处理完一层将其左右子树加入,树高+1
    /**
     * Definition for a binary tree node.
     * class TreeNode(var _value: Int) {
     *   var value: Int = _value
     *   var left: TreeNode = null
     *   var right: TreeNode = null
     * }
     */
    import scala.collection.mutable 
    object Solution {
        def maxDepth(root: TreeNode): Int = {
            if (root == null) return 0
            val queue = new mutable.Queue[TreeNode]()
            var ans = 0
            queue.enqueue(root)
    
            while (queue.isEmpty == false){
                val queueSize = queue.size
                for (i <- 0  until queueSize){
                    val tempNode = queue.dequeue
                    if (tempNode.left != null) queue.enqueue(tempNode.left)
                    if (tempNode.right != null) queue.enqueue(tempNode.right)
                }
                ans += 1
            }
            return ans
        }
    }
    
  • 相关阅读:
    过滤器和拦截器的区别
    sql注入
    JavaScript学习
    Linux简单学习
    HTML DOM学习
    Java集合
    java 多线程学习
    常用的OO设计原则
    JAVA设计模式一策略模式(Strategy Pattern)
    201521123071《Java程序设计》第1周学习总结
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13434519.html
Copyright © 2020-2023  润新知