二叉树中和为某一值的路径

/**
 * 打印从根到叶子各个节点和为iSum的路径
 * @param pNode 树根节点(该函数不负责判空操作)
 * @param iSum  所要查找的路径和
 * @param path  路径(数组长度为树的深度,可用容器替代)
 * @param size  路径长度(初始值为0)
 */
void FindPath(BTNode *pNode, int iSum, int path[], int size)
{
    if(NULL == pNode)
    {
        int sum = 0;
        for(int i = 0; i < size; ++i)
        {
            sum += path[i];
        }

        if(sum == iSum)
        {
            for (int i = 0; i < size; ++i)
            {
                cout << path[i] << " ";
            }
            cout << endl;
        }
        else
        {
            return;
        }
    }

    path[size] = pNode->m_iValue;
    FindPath(pNode->m_pLeft, iSum, path, size + 1);
    FindPath(pNode->m_pRight, iSum, path, size + 1);
}

 

posted @ 2015-08-10 21:22  指上弹兵赵小括  阅读(160)  评论(0编辑  收藏  举报