您的位置:首页 > 编程语言

怎样按层次打印二叉树

2015-11-09 15:52 190 查看
印二叉树某一层的节点

按层非递归遍历二叉树是一道常见的题目,编程之美上有一个打印出二叉树某一层的节点的问题,稍稍有意思。
在编程之美上,提到了两种解法:
(1)一种是递归解法 (如果树的层次不深,使用递归是不会有太大的开销的)

void TransLevel(Node* root,int level) //level为剩下的level
{
if(root == NULL)
return ;
else
{
if(level == 1)
printf("%d ",root->data);
else
{
TransLevel(root->left,level-1);
TransLevel(root->right,level-1);
}
}
}


(2)另一种则是利用队列的非递归解法

如果只是简单的按层遍历的话,可以用一个队列,先将上层节点入队,节点出队的时候将其孩子节点入队,这样就可以达到按层入队出队的效果。
要打印出某一层,可以在出队的时候一层一层地出,同时计算出队的次数,就可以判断出当前是哪一层,下面是我的代码:
.......

出处:http://www.cnblogs.com/-Lei/archive/2013/02/25/2928629.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息