https://leetcode.cn/problems/lowest-common-ancestor-of-deepest-leaves/description/
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int getmaxdepth(struct TreeNode *root) {
if(root==NULL) {
return 0;
}
int left = getmaxdepth(root->left);
int right = getmaxdepth(root->right);
if(left > right) {
return left+1;
} else {
return right+1;
}
}
struct TreeNode* lcaDeepestLeaves(struct TreeNode* root){
if(root == NULL) {
return NULL;
}
if(root->left == NULL && root->right == NULL) {
return root;
}
int left = getmaxdepth(root->left);
int right = getmaxdepth(root->right);
printf("left = %d,right = %d\n",left, right);
if(left == right) {
return root;
}
if(left > right) {
return lcaDeepestLeaves(root->left);
} else {
return lcaDeepestLeaves(root->right);
}
}