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.
算法解析:既可以用深度优先搜索,也可以用广度优先搜索,前者可以节省代码,后者可以提高速度,但两个方法都不会超时。
C语言版
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int maxDepth(struct TreeNode* root) {
if(root)
{
root->val = 0;
root->val = maxDepth(root->left) + 1;
int depth = maxDepth(root->right) + 1;
if(root->val < depth)
root->val = depth;
return root->val;
}
else
return 0;
}
Python版(深度优先搜索)
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if root:
root.val = 0
root.val = self.maxDepth(root.left) + 1
depth = self.maxDepth(root.right) + 1
if root.val < depth:
root.val = depth
return root.val
else:
return 0
Python版(更Pythonic的代码,别人写的)
class Solution:
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1