二叉树层序遍历和之字遍历

1.用一个队列记录当前层的节点,然后一个个取出,取出的同时将取出节点的儿子节点加入到队列中。

2.之字遍历则需要一个标志为将行进行翻转

ArrayList<Integer>(ArrayList<Integer>()) res;

flag = true;//实现奇数行翻转,偶数行不翻转

Queue temp;

temp.offer(head)

while(temp != null){

  n = temp.size();

  flag = ! flag;

  ArryList<Integer> row;

  for(int i=0;i<n;i++){

    p = temp.poll();

    row.add(p);

    if(p.left != null){temp.offer(left);}

    if(p.right != null){temp.offer(right);}

  }

  if(flag){

    Collctions.reverse(row);

  }

  res.add(row);

}

 

posted @ 2023-04-09 18:49  材料狗不许睡午觉  阅读(37)  评论(0)    收藏  举报