• LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium


    本题也属于层次遍历的变形,不同之处在于其遍历的方法是交替进行的,形成一个ZigZag的曲线形式,如下:

    代码如下:

     1 struct TreeNode {
     2     int            val;
     3     TreeNode*    left;
     4     TreeNode*    right;
     5     TreeNode(int x): val(x), left(NULL),right(NULL) {}
     6 };
     7 
     8 void Swap(vector<int> &ivec)
     9 {
    10     int temp = 0;
    11     int len = ivec.size();
    12     for (int i = 0; i < len/2; i ++) {
    13         temp = ivec.at(i);
    14         ivec.at(i) = ivec.at(len-1-i);
    15         ivec.at(len-1-i) = temp;
    16     }
    17 }
    18 
    19 vector<vector <int> > zigzagLevelOrder(TreeNode *root)
    20 {
    21     vector<vector<int> > tree_vector;
    22     vector<int> ivec;
    23     queue<TreeNode *> tree_queue;
    24     if (NULL == root)
    25         return tree_vector;
    26 
    27     tree_queue.push(root);
    28     tree_queue.push(NULL);
    29     int nLevelCount = 1;
    30     while (true) {
    31         TreeNode *pTemp = tree_queue.front();
    32         tree_queue.pop();
    33         if (pTemp == NULL) {
    34             if (nLevelCount%2 == 0) { //if the num of level is odd, swap the ivec;
    35                 Swap(ivec);
    36             }
    37             tree_vector.push_back(ivec);
    38             ivec.clear();
    39             if (tree_queue.empty())
    40                 break;
    41             tree_queue.push(NULL);
    42             nLevelCount ++;
    43         }
    44         else {
    45             ivec.push_back(pTemp->val);
    46             if (pTemp->left)
    47                 tree_queue.push(pTemp->left);
    48             if (pTemp->right)
    49                 tree_queue.push(pTemp->right);
    50         }
    51     }
    52     return tree_vector;
    53 }
  • 相关阅读:
    SLA打印机之打印机介绍
    SLA打印机之Slc文件解析
    Rayland-FDM打印机C200介绍
    Android 关机和重启
    AGVS调度系统 控制协议
    AGV 控制协议
    Android wechat 分享
    Android wechat 支付
    Android TimeoutExceptions及 wakelock
    flex 兼容性写法
  • 原文地址:https://www.cnblogs.com/bakari/p/4126666.html
Copyright © 2020-2023  润新知