Leetcode每日一题:104.maximum-depth-of-binary-tree(二叉树的最大深度)

Leetcode每日一题:104.maximum-depth-of-binary-tree(二叉树的最大深度)_第1张图片
思路:这连续的几道题几乎都是用递归的思想,从结点root开始,我就设定一个count和一个max,
左孩子不空,就root->left,count++,继续遍历,右孩子不空,就root->right,count++继续遍历,如果遍历到某个叶子节点时(左右孩子都为空),就判断count与max,看是否需要更新max的值;

Leetcode每日一题:104.maximum-depth-of-binary-tree(二叉树的最大深度)_第2张图片

/**
 * 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)
    {
        if(root==NULL)
			return 0;
        int result = 0;
        maxTreeDepth(root, 1, result);
        return result;
    }
    void maxTreeDepth(TreeNode* root, int count, int &max)
    {
        if (root->left == NULL && root->right == NULL) //叶子结点,判断是否更新max值
        {
            if (count > max)
                max = count;
            return;
        }
        if (root->left)//左端不空,就往左端继续遍历
        {
            maxTreeDepth(root->left, count+1, max);
        }
        if (root->right != NULL)//右端不空,就往右端继续遍历
        {
            maxTreeDepth(root->right, count+1, max);
        }
    }
};

你可能感兴趣的:(Leetcode,二叉树,leetcode,算法)