风言枫语  

 

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.

DFS:

 

int maxDepth(TreeNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(root == NULL) return 0;
        int left = maxDepth(root->left);
        int right = maxDepth(root->right);
        return left > right ? left + 1 : right +1;
    }


BFS:

 

int maxDepth(TreeNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(root == NULL) return 0;
    	queue<TreeNode*> que;
		que.push(root);
		int count = 1;
		int depth = 0;
		while(!que.empty())
		{
			TreeNode* tmp = que.front();
			que.pop();
			count--;

			if(tmp->left)
				que.push(tmp->left);
			if(tmp->right)
				que.push(tmp->right);
			if(count == 0)
			{
				depth++;
				count=que.size();
			}
		}
		return depth;
    }

 

 

 

posted on 2013-09-21 12:11  风言枫语  阅读(110)  评论(0编辑  收藏  举报