树的非常规遍历问题(cont)

层遍历问题

问题: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).

Input:

  • 树的跟 :: TreeNode

Output:

  • 整棵树的按层遍历:List>

Intuition:

这个题可以做BFS的例题了,就酱...

Code:

TC:O()

public List> levelOrder(TreeNode root) {
  List> res = new ArrayList<>();
  if (root == null){
    return res;
  }
  Deque que = new ArrayDeque<>();
  que.offer(root);

  while (!que.isEmpty()){
    List list = new ArrayList<>();
    int size = que.size();
    for(int i = 0; i < size; i++){ //nodes in one level
      ListNode cur = que.poll();
      list.add(cur.val);
      if (cur.left != null){
        que.offer(cur.left);
      }
      if (cur.right != null){
        que.offer(cur.right);
      }
    }  
    res.add(list);
  }
  return res;
}

问题:Binary Tree Level Order Traversal II

列遍历问题

之型遍历问题

问题:Binary Tree Zigzag Level Order Traversal

Reference:

你可能感兴趣的:(树的非常规遍历问题(cont))