二叉树的最大深度
1 class Solution { 2 public: 3 int maxDepth(TreeNode* root){ 4 if(!root) 5 return 0; 6 queue<TreeNode*> q; 7 q.push(root); 8 int deep = 0; 9 10 while(!q.empty()) 11 { 12 deep++; 13 int q_len = q.size(); 14 for(int i =0;i<q_len;i++) 15 { 16 TreeNode* temp = q.front(); 17 q.pop(); 18 //if(temp->left==NULL && temp->right==NULL) 19 // return deep; 20 if(temp->left!=NULL) 21 q.push(temp->left); 22 if(temp->right!=NULL) 23 q.push(temp->right); 24 } 25 26 } 27 return deep; 28 29 } 30 };
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
解法一:递归
/**
* 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 L = maxDepth(root->left);
int R = maxDepth(root->right);
int deep = 1;
if(L==0)
return R+1;
if(R==0)
return L+1;
return max(L,R) + 1;
}
};
浙公网安备 33010602011771号