• [leetcode]Binary Tree Zigzag Level Order Traversal


    DFS,用一个变量来记录方向

    从左往右就是push_back

    从右往左就是push_front ,木有这个函数就用vec.insert(vec.begin() , val),虽然效率不怎样

    /**
     * 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 == nullptr) return ans;
            dfs(ans , root , 0 , true);
            return ans;
        }
    private:
        void dfs(vector<vector<int> >&ans , TreeNode* root , int dep , bool left) {
            if(root == nullptr) return;
            if(dep + 1 > ans.size()) ans.push_back(vector<int>());
            if(left) ans[dep].push_back(root->val);
            else ans[dep].insert(ans[dep].begin() , root->val);
            dfs(ans , root->left,dep+1,!left);
            dfs(ans , root->right,dep+1,!left);
        }
    };
  • 相关阅读:
    6-1
    4-9
    4-5
    4-4
    4-3
    3-10
    作业三2
    作业三1
    课堂练习二
    实验三
  • 原文地址:https://www.cnblogs.com/x1957/p/3525661.html
Copyright © 2020-2023  润新知