荣誉版主
- 积分
- -2403
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2010-5-4
- 最后登录
- 1970-1-1
|
我靠,你和fatfrog是虾米关系!!
wwwyhx 发表于 2011-6-28 22:27 ![]()
和那个链接sibling的不一样吧,没那么麻烦,需要小修改一下用队列的层次遍历算法:
struct TREE_NODE
{
int nVal;
TREE_NODE* pLft;
TREE_NODE* pRgt;
TREE_NODE(int n) : nVal(n), pLft(NULL), pRgt(NULL) {}
};
void PrintLevels(TREE_NODE* pRoot)
{
if (NULL == pRoot) return;
deque<TREE_NODE*> que;
que.push_front(pRoot);
int nCur = 1;
int nNext = 0;
while (!que.empty())
{
TREE_NODE* p = que.back();
que.pop_back();
nCur--;
if (NULL != p->pLft)
{
que.push_front(p->pLft);
nNext++;
}
if (NULL != p->pRgt)
{
que.push_front(p->pRgt);
nNext++;
}
cout<<p->nVal<<" ";
if (0 == nCur)
{
cout<<endl;
nCur = nNext;
nNext = 0;
}
}
} |
|