📅  最后修改于: 2023-12-03 14:57:13.539000             🧑  作者: Mango
在二叉树中,节点有左子节点和右子节点之分,而最大左节点就是二叉树中从根节点开始,一直向左走到底的节点中,值最大的那个节点。
以下是获取二叉树中最大左节点的算法代码:
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
int getMaxLeft(TreeNode* root) {
if (root == NULL) {
return INT_MIN;
}
int maxLeft = INT_MIN;
TreeNode* cur = root->left;
while (cur != NULL) {
maxLeft = max(maxLeft, cur->val);
cur = cur->left;
}
return maxLeft;
}
该算法的复杂度为 $O(h)$,其中 $h$ 是二叉树的高度。
该算法的思路是先判断根节点的左子节点是否为空(如果为空,那么就没有最大左节点),然后通过循环找到根节点的最大左节点。具体来说,从根节点的左子节点开始,一直向左走到底,每次记录下走过的节点中的值最大的节点。最后返回这个最大值即可。
需要注意的是,这里使用了一个较为简单的递归函数,但实际上可以用更加高效的方式实现。
在实际编写代码时,还应注意判断节点指针是否为 NULL,以及如何处理节点值相同的情况等问题。