class Solution {
public:
TreeNode* getLastNode(TreeNode* root) {
// 递归出口
if(!root || root->left == nullptr)
return root;
int leftHeight = 0; // 左子树高度
TreeNode *node = root->left;
while (node){
node = node->left;
++ leftHeight;
}
int rightHeight = 0; // 右子树高度
node = root->right;
while(node){
// 从左孩子开始计算高度
node = node->left;
++ rightHeight;
}
if(leftHeight > rightHeight)
return getLastNode(root->left);
else
// 相等时也是在右子树递归
return getLastNode(root->right);
}
};