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 {
561561 System . out. println();
562562 }
563563
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+
564610 /**
565611 * 7、二叉树,给定量给节点,求这两个节点的最近公共祖先
566612 *
You can’t perform that action at this time.
0 commit comments