树的非递归深度优先遍历

来源:互联网 发布:变色龙引导u盘安装mac 编辑:程序博客网 时间:2024/05/02 00:13
void GZLTBydDataExt::readFromXml(QDomElement & secondElem)
{
    //QDomElement elem = secondElem.firstChildElement();
    //while(!elem.isNull())
    //{
    //    this->readMathData(elem);
    //    elem = elem.nextSiblingElement();
    // }
    QStack<QDomElement> elemStack;
    QDomElement firstChild = secondElem.firstChildElement();
    if(firstChild.isNull())return;
    elemStack.push(firstChild);
    while(!elemStack.isEmpty())
    {
        //先将要处理的节点弹出
        QDomElement elem = elemStack.pop();
        //do something....
        QString path;
        this->getPath(elem, path);
        this->readMathData(elem, path);
        //.............
        QDomElement subElem = elem.nextSiblingElement();
        if (!subElem.isNull())
        {
            elemStack.push(subElem);
        }
        QDomElement child = elem.firstChildElement();
        if(!child.isNull())
        {
            elemStack.push(child);
        }
    }
}

0 0
原创粉丝点击