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

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

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

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

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

          3
         / 
        9  20
          /  
         15   7

    返回它的最大深度 3 。

    题解:

    可以利用DFS递归调用,根结点不存在说明高度为0。C++11里nullptr代表空指针。

    /* C++ */

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     8  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     9  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    10  * };
    11  */
    12 class Solution {
    13 public:
    14     int maxDepth(TreeNode* root) {
    15         if(root==nullptr) return 0;
    16         return max(maxDepth(root->left),maxDepth(root->right))+1;
    17     }
    18 };

    /* JavaScript */

    深度优先遍历

     1 /**
     2  * Definition for a binary tree node.
     3  * function TreeNode(val, left, right) {
     4  *     this.val = (val===undefined ? 0 : val)
     5  *     this.left = (left===undefined ? null : left)
     6  *     this.right = (right===undefined ? null : right)
     7  * }
     8  */
     9 /**
    10  * @param {TreeNode} root
    11  * @return {number}
    12  */
    13 var maxDepth = function(root) {
    14     let res = 0;
    15     const dfs = (n,l) => {  //l代表层级
    16         if(!n) {return;}
    17         if(!n.left && !n.right) {
    18             res = Math.max(res, l); //判断最大深度
    19         }
    20         dfs(n.left, l+1);
    21         dfs(n.right, l+1);
    22     }
    23     dfs(root,1);  
    24     return res;
    25 };
     1 /**
     2  * Definition for a binary tree node.
     3  * function TreeNode(val, left, right) {
     4  *     this.val = (val===undefined ? 0 : val)
     5  *     this.left = (left===undefined ? null : left)
     6  *     this.right = (right===undefined ? null : right)
     7  * }
     8  */
     9 /**
    10  * @param {TreeNode} root
    11  * @return {number}
    12  */
    13 var maxDepth = function(root) {
    14     if(!root) {
    15         return 0;
    16     }else{
    17         const left=maxDepth(root.left);
    18         const right=maxDepth(root.right);
    19         return Math.max(left,right)+1;
    20     }
    21 };
     
     
  • 相关阅读:
    与开发团队高效协作的8个小技巧
    9本java程序员必读的书(附下载地址)
    NPOI导出饼图到Excel
    EF6不支持sqlite Code First解决方案
    C#程序访问底层网络
    如何自己开发软件测试工具?
    .Net mvc 根据前台参数动态绑定对象
    在SSM框架里新增一个功能
    2018-10-12 例会总结
    2018-10-11 java从入门到放弃--方法
  • 原文地址:https://www.cnblogs.com/oaoa/p/14392402.html
Copyright © 2011-2022 走看看