树结构递归遍历

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

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); }

 

转载于:https://my.oschina.net/u/3700450/blog/1545640

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值