输出二叉树中和最大的路径


// root指向根节点,curSum记录当前路径的和,path记录当前的路径的值,max_path记录全局最大的路径,max记录全局最大的路径和。
// 在到达叶节点并且当前路径和大于max时用path更新max_path
void GetMaxSumPath(TreeNode * root, int curSum, vector<int> & path, vector<int> &max_path, int & max)
{
    curSum += root->val;
    path.push_back(root->val);
    bool isLeaf = (root->left == NULL) && (root->right == NULL);
    if (isLeaf && curSum > max)
    {
        max_path.clear();
        max_path = path;
        max = curSum;
    }
    if (root->left != NULL)
        GetMaxSumPath(root->left, curSum, path, max_path, max);
    if (root->right != NULL)
        GetMaxSumPath(root->right, curSum, path, max_path, max);
    path.pop_back();
}

 参考《剑指offer》p145:二叉树中和为某一值的路径。

posted @ 2017-10-10 21:41  蓦然闻声  阅读(256)  评论(0编辑  收藏  举报