二叉树结构
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
简单层次遍历
void levelOrder(TreeNode* root) {
queue<TreeNode*> Q;
if(root == NULL) return ;
Q.push(root);
while(!Q.empty()){
TreeNode* p = Q.front();
Q.pop();
visit(p);
if(p->left != NULL){
Q.push(p->left);
}
if(p->right != NULL){
Q.push(p->right);
}
}
}
按行打印层次遍历
void levelOrder(TreeNode* root) {
queue<TreeNode*> Q;
if(root == NULL) return ;
Q.push(root);
while(!Q.empty()){
int size = Q.size();
while(size--){
TreeNode* p = Q.front();
Q.pop();
visit(p); // printf(p->data)
if(p->left != NULL){
Q.push(p->left);
}
if(p->right != NULL){
Q.push(p->right);
}
}
print("\n");
}
}