Maximum Depth of Binary Tree
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.
题意:给定一个二进制树,找到它的最大深度。
最大深度是从根节点到叶节点的最远的最长的路径节点数。
解题思路:采用递归思路,前序遍历,求出各个叶子节点的度,再设置一个临时变量用于保存叶子节点的度的最大值,可以假设每个节点的值为1,这样节点的度就是遍历到该节点时的节点值之和。
难点:对叶子节点的遍历,并获取其深度值,不同叶子节点的深度值不一样,如何获取这个值。
C语言实现代码:
/**解题思路:采用递归思路,前序遍历,
* 先求出各个叶子节点的深度,并设置一个中间变量用于存储树的最大深度值
* Definition for binary tree
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
void PreOrder(struct TreeNode *root, int *Max, int *depth);
int maxDepth(struct TreeNode *root) {
int Max = 0;
int depth = 1;
PreOrder(root, &Max, &depth);
return Max;
}
void PreOrder(struct TreeNode *root, int *Max, int *depth){
if(root == NULL){
return;
}
if(root->left == NULL && root->right == NULL){
if(*Max < *depth){
*Max = *depth;
return;
}
}
(*depth)++;
PreOrder(root->left, Max, depth);
PreOrder(root->right, Max, depth);
(*depth)--;
}