二叉树中不相邻节点和的最大值

昨天面京东,问二叉树中不相邻节点和的最大值,没写出来。

参考博客https://blog.csdn.net/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));
}

 

你可能感兴趣的:(c++,二叉树,C++)