102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right import queue class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: q = queue.Queue() res = [] if root == None: return [] q.put(root) while q.qsize(): sz = q.qsize() tt = [] for i in range(sz): top = q.get() tt.append(top.val) if top.left : q.put(top.left) if top.right : q.put(top.right) res.append(tt) return res
层序遍历 利用queue
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; if(root == nullptr) return res; queue<TreeNode*> q; q.push(root); while(!q.empty()) { res.push_back(vector<int>()); int cnt = q.size(); for(int i = 1; i <= cnt;++i) { TreeNode* node = q.front();q.pop(); res.back().push_back(node->val); if(node->left != nullptr) q.push(node->left); if(node->right != nullptr) q.push(node->right); } } return res; } };
1 class Solution { 2 public List<List<Integer>> levelOrder(TreeNode root) { 3 List<List<Integer>> res = new ArrayList<List<Integer>>(); 4 Queue<TreeNode> queue = new LinkedList<TreeNode>(); 5 if(root==null) return res; 6 queue.add(root); 7 while (!queue.isEmpty()) { 8 int levlnum = queue.size(); 9 List<Integer> res_temp = new ArrayList<Integer>(); 10 for (int i = 0;i<levlnum ;i++ ){ //把每层的左右节点都保存到queue里 11 //并讲当层的值从queue里弹出,加到res_temp 中 12 if(queue.peek().left!=null) queue.add(queue.peek().left); 13 if(queue.peek().right!=null) queue.add(queue.peek().right); 14 15 res_temp.add(queue.poll().val); 16 } 17 res.add(res_temp); 18 } 19 return res; 20 } 21 }