problem:
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
Tree Depth-first Search
题意:输出二叉树的深度
thinking:
深度优先搜索,记录最大深度
code:
/**
* Definition for binary tree
* 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 max_dep=0;
dfs(0,max_dep,root);
return max_dep;
}
protected:
void dfs(int dep,int &max_dep,TreeNode *node)
{
if(node==NULL)
return;
dep++;
max_dep = max(max_dep,dep);
if(node->left!=NULL)
dfs(dep,max_dep,node->left);
if(node->right!=NULL)
dfs(dep,max_dep,node->right);
}
};