
- 题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
- 解题思路
类似层次遍历,加个判断条件,奇数层正序遍历,偶数层倒序遍历。
- Java实现
import java.util.ArrayList;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/import java.util.Queue;import java.util.LinkedList;import java.util.Collections;public class Solution { public ArrayList > Print(TreeNode pRoot) { ArrayList> ret = new ArrayList<>(); Queuequeue = new LinkedList<>(); queue.add(pRoot); boolean reverse = false; while (!queue.isEmpty()) { ArrayListlist = new ArrayList<>(); int cnt = queue.size(); while (cnt-- > 0) { TreeNode node = queue.poll(); if (node == null) continue; list.add(node.val); queue.add(node.left); queue.add(node.right); } if (reverse) Collections.reverse(list); reverse = !reverse; if (list.size() != 0) ret.add(list); } return ret; }}
该博客介绍了如何使用Java实现按照之字形方式打印二叉树的层次遍历。通过创建一个布尔变量来切换奇偶层的遍历顺序,实现了从左到右和从右至左的交替打印。代码中使用了队列进行层次遍历,同时维护一个反转标志来调整每层节点的输出顺序。
508

被折叠的 条评论
为什么被折叠?



