LeetCodeDay45 —— 二叉樹的鋸齒形層次遍歷★☆

103. 二叉樹的鋸齒形層次遍歷

  • 給定一個(gè)二叉樹,返回其節(jié)點(diǎn)值的鋸齒形層次遍歷。(即先從左往右,再從右往左進(jìn)行下一層遍歷,以此類推,層與層之間交替進(jìn)行)。
示例
  給定二叉樹 [3,9,20,null,null,15,7],
      3
    / \
    9  20
      /  \
    15   7
  返回鋸齒形層次遍歷如下:
    [
      [3],
      [20,9],
      [15,7]
    ]
思路
  1. 利用隊(duì)列實(shí)現(xiàn)層次遍歷,bool變量標(biāo)識(shí)是否需要反轉(zhuǎn)。
  2. 注意不需要使用兩個(gè)隊(duì)列來標(biāo)記‘層’的信息,每次遍歷時(shí)直接取出該層元素個(gè)數(shù)即可。
class Solution {
 public:
  vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
    if (!root) return {};
    bool needSwitch = false;
    vector<vector<int>> ret;
    queue<TreeNode*> mQue;
    mQue.push(root);
    while (!mQue.empty()) {
      int size = mQue.size();
      vector<int> level;
      while (size--) {
        TreeNode* node = mQue.front();
        mQue.pop();
        level.push_back(node->val);
        if (node->left) mQue.push(node->left);
        if (node->right) mQue.push(node->right);
      }
      if (needSwitch) {
        ret.push_back(vector<int>(level.rbegin(), level.rend()));
      } else {
        ret.push_back(level);
      }
      needSwitch = !needSwitch;
    }
    return ret;
  }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)結(jié)構(gòu)第12講 二叉樹的層次遍歷 二叉樹的遍歷一般有先序遍歷、中序遍歷和后序遍歷,這三種遍歷比較簡單。今天我們講...
    rainchxy閱讀 3,739評(píng)論 0 1
  • 三道層次遍歷題,同一個(gè)模板,這邊用到的是兩個(gè)隊(duì)列 二叉樹的層次遍歷 LeetCode題目地址 二叉樹的層次遍歷 加...
    只為此心無垠閱讀 300評(píng)論 0 0
  • 在你面前,我想要變得堅(jiān)強(qiáng)。
    葡萄提子閱讀 138評(píng)論 0 0
  • 這段時(shí)間,一直在梳理工作上的那些事,其中的一項(xiàng)就是設(shè)計(jì)和申請(qǐng)商標(biāo),順便也學(xué)習(xí)了一下相關(guān)的知識(shí)。商標(biāo)的命名也是一門學(xué)...
    tangertan閱讀 559評(píng)論 0 1
  • 我非本我,即我不是原來的我,人的一生在不斷變化,我的思想,你的近況,后一刻的我永遠(yuǎn)不會(huì)再有前一刻的我。但是呢,我是...
    我愚我在閱讀 190評(píng)論 0 0

友情鏈接更多精彩內(nèi)容