leetcode - Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:守望先锋看队友数据 编辑:程序博客网 时间:2024/06/11 14:05

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3   / \  9  20    /  \   15   7

return its zigzag level order traversal as:

[  [3],  [20,9],  [15,7]]

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public:    std::vector<std::vector<int> > zigzagLevelOrder(TreeNode *root) {        dfs(root,0);for (int i = 0; i < res.size(); i++){if(i % 2)std::reverse(res[i].begin(),res[i].end());}return res;    }private:std::vector<std::vector<int>> res;void dfs(TreeNode *root,int level){if(root == NULL) return;if(res.size() == level){res.push_back(std::vector<int>());}res[level].push_back(root->val);dfs(root->left,level+1);dfs(root->right,level+1);}};


0 0
原创粉丝点击