LeetCode二叉树最大深度

LeetCode二叉树最大深度

题目如下

   			 3
           /   \
          9    20
        /  \
       15   7

代码如下

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int maxDepth(TreeNode* root) {//以root作为根节点的二叉树的深度
        if(!root){//如果是空,那么就不具有深度,返回0
            return 0;
        }else{
            int left = maxDepth(root->left)+1;//左子树的深度+当前节点的1
            int right = maxDepth(root->right)+1;//右子树的深度+当前节点的1
            return (left>=right)?left:right;//
            //如果左边深度大于等于右边,那么对于当前节点来说,
            //深度就是左子树深度+1
            //右边深度大于左边则反之
        }
    }
};

思路如下

  1. 对于某个节点来说,他是只能看到自己的相邻节点的。在二叉树中,我们可以认为,每个节点只能看到他的左右孩子节点。
  2. 我们如果把每个节点及其孩子节点拿出来作为单独的二叉树分析,深度要么为1,要么为2,分析的过程是高度相似的。

鉴于以上两点,我们很容易就想到,利用递归来解决问题。

把每个节点都当作根节点,从输入的节点开始,由上到下,一层层往下找节点,直到再无子节点。
再由下到上,不断返回当前深度,直到第一个函数结束。

你可能感兴趣的:(leetcode,二叉树,数据结构)