码迷,mamicode.com
首页 > 其他好文 > 详细

p141 二叉树的 Z 字形遍历(leetcode 103)

时间:2020-04-17 23:47:41      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:c++   arraylist   node   思路   val   reverse   int   null   time   

一:解题思路

Time:O(n),Space:O(n)

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    vector<vector<int>> zigzagLevelOrder(TreeNode* root) 
    {
        vector<vector<int>> result;
        if (root == NULL) return result;
        bool right2Left = false;
        queue<TreeNode*> q;
        q.push(root);

        while (!q.empty())
        {
            int size = q.size();
            vector<int> elem;
            for (int i = 0; i < size; i++)
            {
                TreeNode* node = q.front();
                q.pop();
                elem.push_back(node->val);

                if (node->left != NULL) q.push(node->left);
                if (node->right != NULL) q.push(node->right);
            }

            if (right2Left) reverse(elem.begin(),elem.end());
            result.push_back(elem);
            right2Left = !right2Left;
        }

        return result;
    }
};

Java:

class Solution {
        public List<List<Integer>> zigzagLevelOrder(TreeNode root)
        {
               List<List<Integer>> result=new ArrayList<>();
               if(root==null) return result;
               boolean right2Left=false;
               Queue<TreeNode> q=new LinkedList<>();
               q.add(root);
               
               while (!q.isEmpty())
               {
                   int size=q.size();
                   List<Integer> elem=new ArrayList<>();
                   for(int i=0;i<size;i++)
                   {
                       TreeNode node=q.poll();
                       elem.add(node.val);
                       
                       if(node.left!=null)  q.add(node.left);
                       if(node.right!=null) q.add(node.right);
                   }
                   
                   if(right2Left) Collections.reverse(elem);
                   result.add(elem);
                   right2Left=!right2Left;
               }
               
               return result;
        }
    }

 

p141 二叉树的 Z 字形遍历(leetcode 103)

标签:c++   arraylist   node   思路   val   reverse   int   null   time   

原文地址:https://www.cnblogs.com/repinkply/p/12722968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!