二叉树之字形层次遍历

题目:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{3,9,20,15,7,#,#},使用之字遍历的结果为[[3],[20][9],[15][7]]

算法思想:为每一行建立newLIst与newLine,和行标识符flag(flag=0:倒着输入某一行,flag=1:正着输入)

根据flag将结点的值以数组的形式存入到newLine之中,之后在添加到大数组result中

将此行结点的左右孩子添加到newlist之中,为遍历下一行做准备。

代码分析 :

 ArrayList<ArrayList<Integer>> result  = new ArrayList<ArrayList<Integer>>();

与我们常见的ArrayList<E> Rename = new ArrayList<>();不太一样,ArrayList<ArrayList<Integer>> 通俗来讲就是ArrayList 中存放ArrayList,及将(小)数组存放在(大数组)

之中。

举个例子:

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

ArrayLIst<Integer> list = new ArrayLIst<Integer>();

list.add(1);//向list添加元素1

list.add(2);

res.add(list);//将数组list添加到res当中

return res;

结果为[[1,2]]    :注意两层中括号

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值