1. 程式人生 > >二叉樹的最大深度(LintCode)

二叉樹的最大深度(LintCode)

題目來源:LintCode

原題地址:http://www.lintcode.com/zh-cn/problem/maximum-depth-of-binary-tree/

題目:

給定一個二叉樹,找出其最大深度。

二叉樹的深度為根節點到最遠葉子節點的距離。

您在真實的面試中是否遇到過這個題? Yes 樣例

給出一棵如下的二叉樹:

  1
 / \ 
2   3
   / \
  4   5

這個二叉樹的最大深度為3.

難度級別:
容易
思路分析:
遍歷每個節點,返回該節點左右子樹中深度較大的一個
實現程式碼:
/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution
{
public:
	/**
	* @param root: The root of binary tree.
	* @return: An integer
	*/
	int maxDepth(TreeNode *root)
	{
		if (root == NULL)
		{
			return 0;
		}
		int left = maxDepth(root->left);
		int right = maxDepth(root->right);
		return (left > right) ? left + 1 : right + 1;
	}
};


程式碼說明:
需要注意的是,在返回值時,需要將左右子樹的深度加1,這個代表此節點自己的位置。
如果沒有+1操作,會得到錯誤的答案。