File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -561,6 +561,52 @@ public class TreeSolvingUtil {
561
561
System . out. println();
562
562
}
563
563
564
+
565
+ /**
566
+ * 6、二叉树,zigzag打印
567
+ *
568
+ * @param root 根节点
569
+ * @return
570
+ */
571
+
572
+ public static List<List<Integer > > zigzagLevelOrder (TreeNode root ) {
573
+ List<List<Integer > > ans = new ArrayList<> ();
574
+ if (root == null ) {
575
+ return ans;
576
+ }
577
+ LinkedList<TreeNode > deque = new LinkedList<> ();
578
+ deque. add(root);
579
+ int size = 0 ;
580
+ // 开关每次切换,打印顺序每次变化
581
+ boolean isHead = true ;
582
+ while (! deque. isEmpty()) {
583
+ size = deque. size();
584
+ List<Integer > curLevel = new ArrayList<> ();
585
+ for (int i = 0 ; i < size; i++ ) {
586
+ TreeNode cur = isHead ? deque. pollFirst() : deque. pollLast();
587
+ curLevel. add(cur. val);
588
+ if (isHead) {
589
+ if (cur. left != null ) {
590
+ deque. addLast(cur. left);
591
+ }
592
+ if (cur. right != null ) {
593
+ deque. addLast(cur. right);
594
+ }
595
+ }else {
596
+ if (cur. right != null ) {
597
+ deque. addFirst(cur. right);
598
+ }
599
+ if (cur. left != null ) {
600
+ deque. addFirst(cur. left);
601
+ }
602
+ }
603
+ }
604
+ ans. add(curLevel);
605
+ isHead = ! isHead;
606
+ }
607
+ return ans;
608
+ }
609
+
564
610
/**
565
611
* 7、二叉树,给定量给节点,求这两个节点的最近公共祖先
566
612
*
You can’t perform that action at this time.
0 commit comments