剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)
1、题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
2、初始结构定义如下
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {}
};
3、思路
用一个队列辅助完成打印,先让根节点入队,进入while循环,循环条件是队列不为空,然后定义一个数组vector,再定义一个size为队列大小,每次for循环,都让队列中一个结点的值放入数组中,并让其出队,此外,如果该节点的左右结点不为空,则将结点入队,进入下一次for循环,直至一层遍历完;
需要注意的是:我们每层都是从左到右遍历的,而题目要求我们按之字形遍历打印,所以假设