天天看點

leetcode--104. 二叉樹的最大深度題目連結一、題目二、分析與代碼

題目連結

https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

一、題目

給定一個二叉樹,找出其最大深度。

二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。

說明: 葉子節點是指沒有子節點的節點。

示例:

給定二叉樹 [3,9,20,null,null,15,7],

3

/ \

9 20

/ \

15 7

傳回它的最大深度 3 。

二、分析與代碼

遞歸解決

1.

代碼如下(示例):

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


int maxDepth(struct TreeNode* root){
       if (root == NULL)
        return 0;

    int leftMax, rightMax;
    leftMax = maxDepth(root->left);
    rightMax = maxDepth(root->right);

    if (leftMax > rightMax)
        return leftMax + 1;
    else
        return rightMax + 1;
}

           

2.

代碼如下(示例):

int maxDepth(struct TreeNode* root){
    if(root==0) return 0;
    int heightLeft=1,heightRight=1;
    if(root->left)
        heightLeft+=maxDepth(root->left);
    if(root->right)
        heightRight+=maxDepth(root->right);
    return heightLeft>heightRight?heightLeft:heightRight;
}