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 }
  • 相关阅读:
    iOS常用的终端指令
    instancesRespondToSelector与respondsToSelector的区别
    Struts2(一)快速入门
    pl/sql快速输入select * from等语句快捷键设置
    win10系统安装oracle11g时遇到INS-13001环境不满足最低要求
    JSP四大作用域
    J2EE开发模式
    JAVA四大域对象总结
    Apache与Tomcat有什么关系和区别
    Junit测试框架
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4548026.html
Copyright © 2011-2022 走看看