您的位置:首页 > 其它

二叉树逐行打印,同时打印每行时需要换行

2016-02-03 14:26 274 查看
二叉树逐层遍历

依靠一个队列先进后出的特点进行算法设计如下:

<span style="font-size:18px;">void BinaryTreeTraversal(const BinaryTreeNode* head)
{
if(head==NULL)
return;

Queue<BinaryTreeNode*> queue;
queue.push(head);

while (queue.size()!=0)
{
BinaryTreeNode* aNode = queue.pop();

//打印aNode;

if(aNode->left)
queue.push(aNode->left);
if(aNode->right)
queue.push(aNode->right);
}
}</span>


但是如果在按层打印的同时,还需要每行都输出一个换行符呢?这样的话,只需要一个额外的变量就可以了,这个变量用于记录队列中当前层节点的数目A,当A为0时就需要打印换行符了。代码如下:
void BinaryTreeTraversal(const BinaryTreeNode* head)
{
if(head==NULL)
return;

int cerrentLevelNodeNum=0;
Queue<BinaryTreeNode*> queue;
queue.push(head);
cerrentLevelNodeNum=queue.size();

while (queue.size()!=0)
{
//更新cerrentLevelNodeNum
if(cerrentLevelNodeNum==0)
{
cerrentLevelNodeNum=queue.size();
}

BinaryTreeNode* aNode = queue.pop();

//这里打印输出aNode节点信息

cerrentLevelNodeNum--;

if(cerrentLevelNodeNum==0)
{
//打印换行符
}

if(aNode->left)
queue.push(aNode->left);
if(aNode->right)
queue.push(aNode->right);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: