if(pNode->right)
insert_node_into_queue(pQueue, pNode->right);
pNode = get_node_from_queue(pQueue);
}
return pQueue;
}
QUEUE* traverse_node_by_layer(TREE_NODE* pNode)
{
QUEUE* pQueue;
if(NULL ==pNode)
return NULL;
pQueue = create_queue_for_tree(pNode);
assert(NULL != pQueue);
/* 首个节点加入队列*/
insert_node_into_queue(pQueue, pNode);
pNode = get_node_from_queue(pQueue);
while(pNode){
if(pNode->left)
insert_node_into_queue(pQueue, pNode->left);
if(pNode->right)
insert_node_into_queue(pQueue, pNode->right);
pNode = get_node_from_queue(pQueue);
}
return pQueue;
}
扩充部分:
上面的办法已经可以实现队列的按层输出,那么如果想在节点结构中直接实现数据的按层访问怎么办?其实两步走就可以:1)在已有的TREE_NODE添加prev和next;(2)按照刚才得到的pQueue->pHead结果,依次对prev和next进行赋值即可。不知道朋友们明白了没?