• 按之字形数据打印二叉树


    【问题】请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

    【思路】这道题目与之前有个"二叉树的深度"题目类似,思路的核心是层次遍历,但是在遍历的同时需要处理每一层数据,因此可以使用一个while循环,将每层数据储存到res_tmp中,并且使用even变量来标记层数的奇偶性,如果是奇数的话,那么需要将res_tmp进行反转!

     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };
    10 */
    11 class Solution {
    12 public:
    13     vector<vector<int> > Print(TreeNode* pRoot) {
    14         vector<vector<int>> res;
    15         if(pRoot == nullptr) return res;
    16         queue<TreeNode*> que;
    17         bool even = false;
    18         que.push(pRoot);
    19         while(!que.empty()){
    20             int size = que.size();
    21             vector<int> res_tmp;    // 二叉树得高度,层次遍历
    22             for(int i = 0;i < size; i++){
    23                 TreeNode* tmp = que.front();
    24                 res_tmp.push_back(tmp->val);
    25                 que.pop();
    26                 if(tmp->left != nullptr)
    27                     que.push(tmp->left);
    28                 if(tmp->right != nullptr)
    29                     que.push(tmp->right);
    30             }
    31             if(even){
    32                 reverse(res_tmp.begin(), res_tmp.end());
    33             }
    34             res.push_back(res_tmp);
    35             even = !even;
    36         }
    37         return res;
    38     }
    39 };
  • 相关阅读:
    HihoCoder 1245:王胖浩与三角形 三角形边长与面积
    C++ 读写注册表
    Codestorm:Counting Triangles 查各种三角形的个数
    2015年10月之 叽里咕噜
    HDU 5523:Game
    Codestorm:Game with a Boomerang
    关于GPU-driver for linux的资料
    ACER NV47H75C 安装CUDA 驱动以及调整屏幕
    服务器GTX590安装CUDA
    观后感,读了几篇博文
  • 原文地址:https://www.cnblogs.com/zhudingtop/p/11459241.html
Copyright © 2020-2023  润新知