104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
思路一:深度优先。深度为左右子树的最大值 + 1。
代码:
/** * 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) return 0; return dfs(root); } int dfs(TreeNode *current) { if(!current) return 0; return max(dfs(current->left),dfs(current->right))+1; } };
思路二:
广度优先。用队列实现二叉树的层序遍历。深度为二叉树的层次。
代码:
/** * 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) return 0; queue<TreeNode*> Q; TreeNode *current = root; int count = 0; Q.push(current); int len, i; while(!Q.empty()) { len = Q.size(); if(len) count++; for(i = 0; i < len; i++) { current = Q.front(); Q.pop(); if(current->left) Q.push(current->left); if(current->right) Q.push(current->right); } } return count; } };
posted on 2020-10-10 11:15 Little-Prince 阅读(90) 评论(0) 编辑 收藏 举报