Leetcode 543 Diameter of Binary Tree
二叉树的直径(Diameter of Binary Tree)
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。
示例 : 给定二叉树
1
/ \
2 3
/ \
4 5
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
注意:两结点之间的路径长度是以它们之间边的数目表示。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int maxDepth(struct TreeNode * root){
if (root == NULL) return 0;
int leftMax = maxDepth(root->left);
int rightMax = maxDepth(root->right);
if(leftMax>rightMax){
return leftMax+1;
}
return rightMax+1;
}
int diameterOfBinaryTree(struct TreeNode* root){
if (root == NULL) return 0;
int middle = maxDepth(root->left) + maxDepth(root->right);
int left = diameterOfBinaryTree(root->left);
int right = diameterOfBinaryTree(root->right);
int max = middle;
if (left > max){
max = left;
}
if(right > max){
max = right;
}
return max;
}
二叉树的最大深度(Maximum Depth of Binary Tree)
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例: 给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
这题的解答就是上题写的函数,通过递归实现