• 面试题14:二叉树的三种层级遍历


    1. binary-tree-level-order-traversal
    2. binary-tree-level-order-traversal-ii
    3. binary-tree-zigzag-level-order-traversal
    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<vector<int> > levelOrder(TreeNode *root) {
            vector<vector<int>> res;
            if(root == nullptr) return res;
    
            queue<TreeNode*> q;
            q.push(root);
            vector<int> onelevel;
            while(!q.empty()){
                onelevel.clear();
                int size = q.size();
                for(int i=0;i<size;i++){
                    TreeNode* cur = q.front();
                    q.pop();
                    onelevel.push_back(cur->val);
                    if(cur->left) q.push(cur->left);
                    if(cur->right) q.push(cur->right);
                }
                res.push_back(onelevel);
            }
            return res;
        }
    };
    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<vector<int> > levelOrderBottom(TreeNode *root) {
            vector<vector<int>> res;
            if(root == nullptr) return res;
            queue<TreeNode*> q;
            q.push(root);
            vector<int> onelevel;
            while(!q.empty()){
                onelevel.clear();
                int size = q.size();
                for(int i=0;i<size;i++){
                    TreeNode* cur = q.front();
                    q.pop();
                    onelevel.push_back(cur->val);
                    if(cur->left) q.push(cur->left);
                    if(cur->right) q.push(cur->right);
                }
                res.insert(res.begin(),onelevel);
            }
            return res;
        }
    };
    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
            vector<vector<int>> res;
            if(root == nullptr) return res;
    
            stack<TreeNode*> s1;
            stack<TreeNode*> s2;
            s1.push(root);
            vector<int> onelevel;
              while(!s1.empty() || !s2.empty()){
                onelevel.clear();
                  while(!s1.empty()){
                      TreeNode* cur = s1.top();
                      s1.pop();
                      onelevel.push_back(cur->val);
                      if(cur->left) s2.push(cur->left);
                      if(cur->right) s2.push(cur->right);
                  }
                  if(!onelevel.empty()){
                    res.push_back(onelevel);
                    onelevel.clear();
                }
                  while(!s2.empty()){
                      TreeNode* cur = s2.top();
                      s2.pop();
                      onelevel.push_back(cur->val);
                      if(cur->right) s1.push(cur->right);
                      if(cur->left) s1.push(cur->left);
                  }
                  if(!onelevel.empty())res.push_back(onelevel);
              }
            return res;
        }
    };
  • 相关阅读:
    微信开发-Jssdk调用分享实例
    软件工程
    Homework_4 四则运算
    Homework 3
    每周总结
    自动生成四则运算题目
    Homework 1 -- The beginning
    程序员视角的餐饮行业
    iOS9网络适配_ATS:改用更安全的HTTPS
    Xcode的 发展史
  • 原文地址:https://www.cnblogs.com/wxquare/p/6854433.html
Copyright © 2020-2023  润新知