问题描述
在二叉树中寻找值最大的结点并返回。
样例
给出如下一棵二叉树:
返回值为 3 的节点。
求解
网上找到的方法中很多需要再搞一个成员变量,且先赋值为int类型的最小值,不够简洁优雅,也不方便改造成泛型算法。本文提供一种使用函数对象和Lambda表达式的解法。
class Solution {
public:
TreeNode* maxNode(TreeNode* root) {
TreeNode *max = root;
std::function<void(TreeNode *)> findMax = [&](TreeNode *node) {
if (!node) {
return;
}
findMax(node->left);
if (max->val < node->val) {
max = node;
}
findMax(node->right);
};
findMax(root);
return max;
}
};