您的位置:首页 > 编程语言 > C语言/C++

[leetcode]Maximum Depth of Binary Tree (求二叉树的最大深度 C语言)

2015-03-27 21:03 621 查看
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)--;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐