• LeetCode OJ--Binary Tree Zigzag Level Order Traversal *


    https://oj.leetcode.com/problems/binary-tree-zigzag-level-order-traversal/

    树的层序遍历

    使用两个 stack 或者 vector 分别表示 当前层和下一层

    /**
     * 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> > ans;
            if(root == NULL)
                return ans;
            
            vector<TreeNode *> parent;
            vector<TreeNode *> son;
            parent.push_back(root);
            
            int level = 0;
            while(parent.empty() == false)
            {
                vector<int> ansPiece;
                
                if(level % 2 == 0) // from left to right
                {
                    for(int i = parent.size() - 1; i >= 0; i--)
                    {
                        TreeNode *current = parent[i];
                        ansPiece.push_back(current->val); // save the ans
                        
                        if(parent[i]->left)
                            son.push_back(parent[i]->left);
                        if(parent[i]->right)
                            son.push_back(parent[i]->right);
                    }
                }
                else // from right to left
                {
                    for(int i = parent.size() - 1; i >= 0; i--)
                    {
                        TreeNode *current = parent[i];
                        ansPiece.push_back(current->val);
                        
                        if(parent[i]->right)
                            son.push_back(parent[i]->right);
                            
                        if(parent[i]->left)
                            son.push_back(parent[i]->left);
                    }
                }
                level++;
                parent = son;
                son.clear();
                ans.push_back(ansPiece);
            }
            return ans;
        }
        
    };
  • 相关阅读:
    移动布局之弹性布局
    .dpg和.webp的图片格式
    跳转不到对应的JSP页面
    CentOS7配置vsftpd3.0.2
    Linux如何将用户从一个组中移除?
    数组和方法
    运算符
    数据类型转换
    Apache的虚拟主机配置及伪静态操作
    Linux--文件的上传和下载
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3893424.html
Copyright © 2020-2023  润新知