LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历

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

水题,在DFS时加入一个level参数识别层数,然后将每层的结点都压入相应的数组中。

/**
 * 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> > tot;
    void Solve(TreeNode *r,int l){
        if (r==NULL) return;
        if (l>=tot.size()){
            tot.push_back(vector<int>());
        }
        tot[l].push_back(r->val);
        Solve(r->left,l+1);
        Solve(r->right,l+1);
    }
    vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
        Solve(root,0);
        for (int i=0;i<tot.size();i++){
            if (i%2==1){
                reverse(tot[i].begin(),tot[i].end());
            }
        }
        return tot;
    }
};

  

posted @ 2014-10-11 14:30  zombies  阅读(146)  评论(0编辑  收藏  举报