二叉树的最大深度

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

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

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

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

3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。

想法一:使用前序遍历,但是这里要注意这个在前序遍历的前提之下最大深度应该怎么求的。

复制代码
class Solution {
public:
    int getmax(TreeNode* root) {
        if (root == NULL) {
            return 0;
        }
        int lefts = maxDepth(root->left);
        int rights = maxDepth(root->right);
        int maxsize = 1+max(lefts, rights);//分治思想。
        return maxsize;
    }
    int maxDepth(TreeNode* root) {
        return getmax(root);
    }
};
复制代码

想法二:用层序遍历,vector<vector<int>>的size就是深度。注意:层序遍历一定是使用的队列:

复制代码
class Solution {
public:
    int maxDepth(TreeNode* root) {
        queue<TreeNode*>qu;//使用的是队列,因为出去的节点的左右节点均要从屁股进去
        if (root == NULL) {
            return 0;
        }
        vector<vector<int>>nums;
        qu.push(root);
        while (!qu.empty()) {
            int size = qu.size();
            vector<int>num;
            for (int i = 0; i < size; i++) {
                TreeNode* top = qu.front();
                num.push_back(top->val);
                qu.pop();
                if (top->left)qu.push(top->left);
                if (top->right)qu.push(top->right);
            }
            nums.push_back(num);
        }
        return nums.size();
    }
};
复制代码

 

posted @ 2022-09-15 15:15  铜锣湾陈昊男  阅读(4)  评论(0)    收藏  举报
点击右上角即可分享
微信分享提示