劍指offer面試題23 從上往下列印二叉樹
阿新 • • 發佈:2019-01-09
解題思路:
考察層次遍歷二叉樹,可以利用一個佇列來實現。當一個節點從佇列頭部移除時,若其存在左子節點,則左子節點入佇列;若存在右子節點,則右子節點入佇列,如此迴圈下去,直到佇列為空,證明佇列中的所有元素都已經訪問過了,結束迴圈。
import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public class Solution { /** * 解題思路: * 考察層次遍歷二叉樹,可以利用一個佇列來實現。當一個節點從佇列頭部移除時,若其包含左子節點,則左子節點入佇列;若包含右子節點,則右子節點 * 入佇列,如此迴圈下去,指導佇列為空結束迴圈 */ public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> arrayList = new ArrayList<>(); if (root == null) { return arrayList; } Queue<TreeNode> queue = new LinkedList<>(); //將根節點入隊 queue.offer(root); while (!queue.isEmpty()) { //取出隊首元素 TreeNode first = queue.peek(); //訪問隊首元素 arrayList.add(first.val); //隊首元素出佇列 queue.poll(); if (first.left != null) { queue.offer(first.left); } if (first.right != null) { queue.offer(first.right); } } return arrayList; } }