樹結構遞歸遍歷


   項目需求,從一個樹結構中獲取所有節點的名稱,寫了個遞歸方法,記錄下來,方便以后查詢。

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