本文主要是介绍【刷爆力扣之二叉树】107. 二叉树的层序遍历 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
107. 二叉树的层序遍历 II
这道题要求进行自底向上的层序遍历,可以先使用正序层序遍历的方式对树进行遍历,然后将每一层的遍历结果放入一个栈数据结构中,等遍历完成后,将栈数据结构中的每一层的节点再弹出加入到结果集合,即可将原先栈中的数据顺序反转,实现自底向上的层序遍历
public List<List<Integer>> levelOrderBottom(TreeNode root) {List<List<Integer>> res = new ArrayList<>();// 栈数据结构暂存数据Stack<List<Integer>> stack = new Stack<>();if (root == null) {return res;}// 正常的层序遍历,并将结果放入栈数据结构Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {List<Integer> level = new ArrayList<>();int size = queue.size();for (int i = 0; i < size; i++) {TreeNode polled = queue.poll();level.add(polled.val);if (polled.left != null) {queue.offer(polled.left);}if (polled.right != null) {queue.offer(polled.right);}}stack.push(level);}// 将栈中的数据弹出加入结果集合,实现顺序反转while (!stack.isEmpty()){res.add(stack.pop());}return res;
}
这篇关于【刷爆力扣之二叉树】107. 二叉树的层序遍历 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!