zoukankan      html  css  js  c++  java
  • 二叉树的最大深度

    dfs

    题解前递归

    根节点是0,变量保存最大深度,如果当前深度大于最大深度就更新,返回最大深度

    var maxDepth = function(root) {
        let maxDeep = 0  //最大深度
        let dg = (root,deep = 0) => {  //deep当前深度
            if(root == null) return
            deep++ 
            if(deep > maxDeep) maxDeep = deep
            dg(root.left,deep)
            dg(root.right,deep)
        }
        dg(root)
        return maxDeep
    };

     题解后递归

    叶子节点是0,递归到父节点 比较左子节点和右子节点的大小 + 1

    var maxDepth = function(root) {
        if(root == null) return 0
        let left = maxDepth(root.left)
        let right = maxDepth(root.right)
        return Math.max(left,right) + 1
    };

     bfs

    遍历当前层所有节点,弹出,如果有子节点入栈,如果栈的长度大于0,深度 + 1

    var maxDepth = function(root) {
        if(root == null) return 0
        let arr = [root]
        let deep = 1
        while(arr.length){
            let len = arr.length
            for(let i = 0; i < len; i++){
                let n = arr.shift()
                if(n.left) arr.push(n.left)
                if(n.right) arr.push(n.right)
            }
            if(arr.length > 0) deep++
        }
        return deep
    };
  • 相关阅读:
    struts总结
    struts的MVC详细实现
    struts的由来
    Hibernate的搭建及使用
    Hibernate简介
    泛型
    eclipse手动添加源码
    beanUtils操作bean的属性
    ref:JAVA之Forward和Redirect的区别
    ref:下一个项目为什么要用 SLF4J
  • 原文地址:https://www.cnblogs.com/jiaobaba/p/14300610.html
Copyright © 2011-2022 走看看