昨天面京东,问二叉树中不相邻节点和的最大值,没写出来。
参考博客https://blog.youkuaiyun.com/i_am_bird/article/details/78635887才恍然大悟
记录下来:
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int v):val(v),left(nullptr),right(nullptr){}
};
int NoAdjacentNodeMaxSum(TreeNode* root){
if (!root) return 0;
int sum = 0;
if (root->left)
sum += NoAdjacentNodeMaxSum(root->left->left) + NoAdjacentNodeMaxSum(root->left->right);
if (root->right)
sum += NoAdjacentNodeMaxSum(root->right->left) + NoAdjacentNodeMaxSum(root->right->right);
return max(sum+root->val, NoAdjacentNodeMaxSum(root->left)+NoAdjacentNodeMaxSum(root->right));
}