之字形打印二叉树
Posted blythe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了之字形打印二叉树相关的知识,希望对你有一定的参考价值。
public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> ans = new ArrayList<>(); if (root == null) return ans; // 使用两个栈维护顺序 Stack<TreeNode> stack = new Stack<>(); Stack<TreeNode> nextStack = new Stack<>(); stack.add(root); int flag = 0; List<Integer> lay = new ArrayList<>(); while (!stack.isEmpty()) { TreeNode node = stack.pop(); lay.add(node.val); // 如果当前是从左到右遍历,按左子树右子树的顺序添加 if (flag == 0) { if (node.left != null) nextStack.add(node.left); if (node.right != null) nextStack.add(node.right); } else// 如果当前是从右到左遍历,按右子树左子树的顺序添加 { if (node.right != null) nextStack.add(node.right); if (node.left != null) nextStack.add(node.left); } if (stack.isEmpty()) { // 交换两个栈 Stack<TreeNode> tmp = stack; stack = nextStack; nextStack = tmp; // 标记下一层处理的方向 flag = 1 - flag; ans.add(new ArrayList<>(lay)); lay.clear(); } } return ans; }
以上是关于之字形打印二叉树的主要内容,如果未能解决你的问题,请参考以下文章