目的:
旨在记录在Leedcode网上刷题的过程,记录心得。
题目:
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
思路:
递归遍历方法
若当前结点为空则返回0;
否则分别求当前结点的左右子树的深度,取左右子树深度的最大值;
将左右子树深度的最大值+1后返回
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
/*
思路:递归遍历方法
若当前结点为空则返回0;
否则分别求当前结点的左右子树的深度,取左右子树深度的最大值;
将左右子树深度的最大值+1后返回
*/
public:
int maxDepth(TreeNode* root) {
if(root==NULL) return 0;
int left = maxDepth(root->left);
int right = maxDepth(root->right);
int max = left>right?left:right;
return max+1;
}
};