zoukankan      html  css  js  c++  java
  • 树结构递归遍历

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

    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 ="
    ";
                ost.write(interval.c_str(), interval.size());
            }
    // 如果有子节点,继续找子节点,知道找到最后一个子节点。
    if(down) { getAllStringIds(down); }
    //递归从底层向,将每个子节点同一层的节点作为current节点继续循环下去。
         //这种递归借助于堆栈嵌套,层数太多,可能会引起堆栈溢出。
    if(next) { curr = next; } }while(next); }
  • 相关阅读:
    C#中KeyDown和KeyPress区别
    c#快捷键设置和text输入限制
    问题总结
    c#串口编程和单片机通信重大发现
    c#类似单片机的8bit或运算
    c#中将默认常量(32bit)转换为8bit
    我的秋季个人阅读计划
    学期总结
    阅读笔记《软件秘籍》03
    阅读笔记--09
  • 原文地址:https://www.cnblogs.com/wanggang123/p/5897183.html
Copyright © 2011-2022 走看看