面试题67:把二叉树打印成多行
来源:互联网 发布:双肩电脑背包 知乎 编辑:程序博客网 时间:2024/04/29 00:03
题目:
从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印一行。
思路:
其实还是按层遍历,用队列可以实现。关键是如何每一层打印一行。
可以重新定义一个结构:
struct Com{Node *node;int level;Com(Node *_node, int _level) :node(_node), level(_level){}};每次往队列取出元素时,如果与当前要输出的层相同,直接输出,如果不同,则先输出换行,再输出。
每次往队列增加元素时,带上该结点所在的层。
Q.push(Com(temp.node->left, temp.level + 1));实现如下:
#include <iostream> #include <vector> #include <queue>using namespace std;struct Node{int val;Node *left;Node *right;Node(int _val) :val(_val), left(NULL), right(NULL){}};struct Com{Node *node;int level;Com(Node *_node, int _level) :node(_node), level(_level){}};void PrintByLevel(Node *root){if (!root) return;queue<Com> Q;Q.push(Com(root, 1));int outLevel = 1;while (!Q.empty()){Com temp = Q.front();Q.pop();if (temp.level == outLevel)cout << temp.node->val << " ";else{outLevel = temp.level;cout << endl;cout << temp.node->val << " ";}if (temp.node->left) Q.push(Com(temp.node->left, temp.level + 1));if (temp.node->right) Q.push(Com(temp.node->right, temp.level + 1));}cout << endl;}int main(){Node *n1 = new Node(1);Node *n2 = new Node(2);Node *n3 = new Node(2);Node *n4 = new Node(4);Node *n5 = new Node(5);Node *n6 = new Node(5);Node *n7 = new Node(4);Node *n8 = new Node(3);n1->left = n2;n1->right = n3;n2->left = n4;n2->right = n5;n3->left = n6;n3->right = n7;n7->right = n8;PrintByLevel(n1);return 0;}
0 0
- 面试题67:把二叉树打印成多行
- 面试题60:把二叉树打印成多行
- 剑指offer-面试题60:把二叉树打印成多行
- 面试题60:把二叉树打印成多行
- 剑指offer--面试题60:把二叉树打印成多行
- 剑指offer-面试题60-把二叉树打印成多行
- 面试题60:把二叉树打印成多行
- 剑指offer 面试题60 把二叉树打印成多行
- 面试题60:把二叉树打印成多行
- 【剑指Offer】面试题60:把二叉树打印成多行
- 面试题60. 把二叉树打印成多行
- 剑指Offer面试题60:把二叉树打印成多行 Java实现
- (剑指Offer)面试题61:把二叉树打印成多行
- 剑指offer面试题60 把二叉树打印成多行(Java实现)
- 《剑指Offer》学习笔记--面试题60:把二叉树打印出多行
- 【剑指Offer学习】【面试题60:把二叉树打印出多行】
- 剑指offer面试题[60]-将二叉树打印成多行
- 面试题 23: 从上到下打印二叉树
- 第二篇——坚持!!
- 正整数分组
- 实模式
- Android Activity详解
- UICollectionView
- 面试题67:把二叉树打印成多行
- linux 实现输出重定向(printf 打印,输出到指定文件(不输出到终端))
- IBM欲加强无人机反应速度:可用来打乒乓球
- JAVA Socket编程
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- hrbust 哈理工oj 1330 邂逅【模拟】
- 递归函数求n的阶乘
- Linux具体权限规划之ACL(Access Control List)
- runtime运行时 http://blog.csdn.net/ComeOnZhao/article/details/50982808