树结构递归遍历


   项目需求,从一个树结构中获取所有节点的名称,写了个递归方法,记录下来,方便以后查询。

void getAllStringIds(mpc::nsdk::IMediaIterator *it)
{
    IMediaNode *self = nullptr;
        IMediaIterator *curr = nullptr;
       IMediaIterator *next = nullptr;
       IMediaIterator *down = nullptr;
    curr = it;
    do{
        self = curr->self();
        next = curr->next();
        down = curr->down();

        mpc::nsdk::IMediaRes *resPtr = nullptr;
        mpc::nsdk::SResId resId;

        if(self->isRes())
        {
             resPtr = dynamic_cast< mpc::nsdk::IMediaRes* > ( self );
             resId = resPtr->msid();
             string stringId;
             resIdStr(resId,stringId);
            ost.write(stringId.c_str(),stringId.size());
            string interval ="\r\n";
            ost.write(interval.c_str(), interval.size());
        }
// 如果有子节点,继续找子节点,知道找到最后一个子节点。
if(down) { getAllStringIds(down); }
//递归从底层向,将每个子节点同一层的节点作为current节点继续循环下去。
     //这种递归借助于堆栈嵌套,层数太多,可能会引起堆栈溢出。
if(next) { curr = next; } }while(next); }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM