题目
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.
思路
对二叉树的深度优先搜索,可以利用递归实现
解答
py
# 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 """ return self.depthSearch(root, 1, 0) def depthSearch(self, node, cur, md): if node is None: return md md = max(cur, md) md1 = self.depthSearch(node.left, cur+1, md) md2 = self.depthSearch(node.right, cur+1, md) return max(md1, md2)
c#
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */ public class Solution { public int MaxDepth(TreeNode root) { return this.DepthSearch(root, 1, 0); } public int DepthSearch(TreeNode node, int cur, int md) { if (node == null) return md; //md = new int[2]{cur, md}.Max(); md = cur > md ? cur : md; int md1 = this.DepthSearch(node.left, cur + 1, md); int md2 = this.DepthSearch(node.right, cur + 1, md); md = md1 > md2 ? md1 : md2; return md; } }