zoukankan      html  css  js  c++  java
  • [LeetCode] Binary Tree Level Order Traversal

    A classic tree traversal problem. I share my two solutions here: BFS and DFS.

    BFS:

     1     vector<vector<int>> levelOrder(TreeNode *root) {
     2         vector<vector<int>> levels;
     3         if(!root) return levels;
     4         queue<TreeNode*> toVisit;
     5         toVisit.push(root);
     6         int numLevelNodes = 1;
     7         while(!toVisit.empty()) {
     8             vector<int> level;
     9             for (int i = 0; i < numLevelNodes; i++) {
    10                 TreeNode* node = toVisit.front();
    11                 toVisit.pop();
    12                 level.push_back(node -> val);
    13                 if(node -> left) toVisit.push(node -> left);
    14                 if(node -> right) toVisit.push(node -> right);
    15             }
    16             levels.push_back(level);
    17             numLevelNodes = toVisit.size();
    18         }
    19         return levels;
    20     }

    DFS:

     1 vector<vector<int>> levelOrder(TreeNode *root) {
     2     vector<vector<int>> levels;
     3     if(!root) return levels;
     4     int curLevel = 1;
     5     bool nextLevel = true;
     6     while(nextLevel) {
     7         nextLevel = false;
     8         vector<int> level;
     9         levelTraverse(root, curLevel++, nextLevel, level);
    10         levels.push_back(level);
    11     }
    12     return levels;
    13 }
    14 void levelTraverse(TreeNode* node, int curLevel, bool& nextLevel, vector<int>& level) {
    15     if(!node) return;
    16     if(curLevel == 1) {
    17         level.push_back(node -> val);
    18         if(node -> left || node -> right) nextLevel = true;
    19     }
    20     else {
    21         levelTraverse(node -> left, curLevel - 1, nextLevel, level);
    22         levelTraverse(node -> right, curLevel - 1, nextLevel, level);
    23     }
    24 }
  • 相关阅读:
    预搜索,不匹配;反向预搜索,不匹配
    反向引用 /1, /2...
    贪婪与非贪婪模式
    其他一些代表抽象意义的特殊符号
    修饰匹配次数的特殊符号
    自定义能够匹配 ' 多种字符' 的表达式
    能够与 ' 多种字符' 匹配的表达式
    6)添加带有颜色的那个画板
    5)添加快捷键
    4)记住我的图形
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4548026.html
Copyright © 2011-2022 走看看