题目描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
解法1:递归
DFS深度扫描
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class Solution { private: int max; public: int maxDepth(TreeNode* root) { if(root==NULL) return 0; max=0; frontfind(root,0); return max; } void frontfind(TreeNode *root,int height) { if(max<height) max=height; if(root!=NULL) { frontfind(root->left,height+1); frontfind(root->right,height+1); } return ; } };
|
解法2:迭代
队列实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution { public: int maxDepth(TreeNode* root) { if(root==NULL) return 0; queue<TreeNode *>que; que.push(root); TreeNode *p=new TreeNode(0); int height=0; while(!que.empty()) { int n=que.size(); for(int i=0;i<n;i++) { p=que.front(); que.pop(); if(p->left) que.push(p->left); if(p->right) que.push(p->right); } height++; } return height; } };
|