美文网首页
之字形打印二叉树

之字形打印二叉树

作者: 小码弟 | 来源:发表于2018-10-21 20:30 被阅读0次

思路:借鉴层次遍历,设置方向标识。到每层时改变方向

vector<vector<int>> ZipPrint(TreeNode* root)
{
  vector<vector<int>> seq;
  if(root == NULL) return seq;
  vector<int> left;
  vector<int> right;
  bool forward = true;
  
  queue<TreeNode* > Q;
  TreeNode* p = root;
  TreeNode* last = root;
  Q.push(root);

  while(!Q.empty())
  {
    p = Q.front();
    if(forward) 
      left.push_back(p->val);
    else
      right.push_back(p->val);
    if(p->left)
      Q.push(p->left);
    if(p->right)
      Q.push(p->right);
    if(p == last)
      { // 一层结束
          if(forward)
          {
            seq.push_back(left);
            left.clear();
            forward = false;
          }
          else
          {
            reverse(right.begin(), right.end()); // 反向,用栈也可以
            seq.push_back(right);
            right.clear();
            forward = true;  
          }
      last = Q.back();
      }
    }
  return seq;
}

相关文章

  • JZ-059-按之字形顺序打印二叉树

    按之字形顺序打印二叉树 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从...

  • 打印二叉树

    按之字形顺序打印二叉树 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺...

  • 二叉树的遍历

    从上往下打印二叉树 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 按之字形顺序打印二叉树 请实现一个函数...

  • 剑指第三周

    对称的二叉树 其实就是要遍历嘛 按之字形顺序打印二叉树 同样是简单的层次遍历 把二叉树打印成多行 这个更简单了 栈...

  • 剑指offer | 按之字形顺序打印二叉树

    按之字形顺序打印二叉树 请实现一个函数按照之字顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的...

  • 剑指offer66题

    数据结构类题目 Tree 32-之字形打印二叉树[https://leetcode-cn.com/problems...

  • 面试题32 - III. 从上到下打印二叉树 III

    题目描述: 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,...

  • 面试题32-3.从上到下打印二叉树3_hn

    题目描述 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第...

  • 一道二叉树打印题引发的deque介绍

    首先题目是这样的:自上而下按照之字形打印二叉树,第一行按照从左到右的顺序打印,第二层按照从右到左。。。这道题我最初...

  • 剑指offer 33- 之字形打印二叉树

    请实现一个函数按照之字形顺序从上向下打印二叉树。 即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第...

网友评论

      本文标题:之字形打印二叉树

      本文链接:https://www.haomeiwen.com/subject/qklizftx.html