思路:
首先我们需要逐层打印二叉树,然后根据每一层的状态判定是从左到右,还是从右到左。
- 首先问题的核心其实是从上到下,从左到右打印二叉树,只不过后面题目多了两个要求,所以我们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)
{
if (pRoot == nullptr)
return {
};
vector<vector<int> > pr;
vector<int> currRow; //保存当前行数据
deque<TreeNode*> treeDeque; //基础框架,队列决定了从上到下打印二叉树
deque<int> sign;

本文介绍如何实现之字形打印二叉树的方法。通过逐层遍历并利用标志位判断左右方向,结合队列数据结构,完成从上到下,从左到右的二叉树打印,并在后续层次中改变打印顺序,实现之字形效果。
最低0.47元/天 解锁文章
430

被折叠的 条评论
为什么被折叠?



