面试题02 - 从上往下打印二叉树 【树】[ water ]
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/\ /\
5 7 9 11
输出8 6 10 5 7 9 11。
解法:树是图的一种特殊的退化形式。本题就是一个广度优先遍历图的问题
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <vector>
#include <stack>
#include <deque>
#include <queue>
#include <bitset>
#include <list>
#include <map>
#include <set>
#include <iterator>
#include <algorithm>
#include <functional>
#include <utility>
#include <sstream>
#include <climits>
#include <cassert>
#define BUG puts("here!!!");
using namespace std;
struct Node {
int value;
Node* lchild;
Node* rchild;
};
queue<Node*> Q;
void bfs(Node* pn) {
if(pn == NULL) return;
Q.push(pn);
while(!Q.empty()) {
Node* t = Q.front();
printf("%d ", t->value);
if(t->lchild) {
Q.push(t->lchild);
}
if(t->rchild) {
Q.push(t->rchild);
}
}
}
int main() {
return 0;
}

浙公网安备 33010602011771号