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
    }
}
posted @ 2020-08-04 17:18  ganshuoos  阅读(93)  评论(0编辑  收藏  举报