二叉树问题之summary^_^(1)

来源:互联网 发布:流动商贩全国数据 编辑:程序博客网 时间:2024/06/05 10:15

个人总结,解决问题 无非是搭积木,几个模块组合一下就能解决问题了。

模块一,创建及遍历二元查找树

void addBSTreeNode(BSTreeNode * & pCurrent, int value)
{
    if (NULL == pCurrent)
    {
        BSTreeNode * pBSTree = new BSTreeNode();
        pBSTree->m_pLeft = NULL;
        pBSTree->m_pRight = NULL;
        pBSTree->m_nValue = value;
        pCurrent = pBSTree;
    }
    else
    {
        if ((pCurrent->m_nValue) > value)
        {
            addBSTreeNode(pCurrent->m_pLeft, value);
        }
        else if ((pCurrent->m_nValue) < value)
        {
            addBSTreeNode(pCurrent->m_pRight, value);
        }
        else
        {
            //cout<<"重复加入节点"<<endl;
        }
    }
}

// 遍历二元查找树  中序
void ergodicBSTree(BSTreeNode * pCurrent)
{
    /*if (NULL == pCurrent)
    {
        return;
    }
    if (NULL != pCurrent->m_pLeft)
    {
        ergodicBSTree(pCurrent->m_pLeft);
    }
    // 节点接到链表尾部
    convertToDoubleList(pCurrent);
    // 右子树为空
    if (NULL != pCurrent->m_pRight)
    {
        ergodicBSTree(pCurrent->m_pRight);
    }*/
    if(pCurrent != NULL)
    {
        ergodicBSTree(pCurrent->m_pLeft);
        convertToDoubleList(pCurrent);
        ergodicBSTree(pCurrent->m_pRight);
    }
}




0 0
原创粉丝点击