JZ-022-從上往下列印二叉樹

雄獅虎豹發表於2021-12-17

從上往下列印二叉樹

題目描述

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。

題目連結: 從上往下列印二叉樹

程式碼

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

/**
 * 標題:從上往下列印二叉樹
 * 題目描述
 * 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。
 * 題目連結:
 * https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701?tpId=13&&tqId=11175&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
 */
public class Jz22 {

    /**
     * 使用佇列來進行層次遍歷。
     * <p>
     * 不需要使用兩個佇列分別儲存當前層的節點和下一層的節點,因為在開始遍歷一層的節點時,當前佇列中的節點數就是當前層的節點數,只要控制遍歷這麼多節點數,就能保證這次遍歷的都是當前層的節點。
     *
     * @param root
     * @return
     */
    public ArrayList<Integer> printFromTopToBottom(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        ArrayList<Integer> result = new ArrayList<Integer>();
        queue.add(root);
        while (!queue.isEmpty()) {
            int cnt = queue.size();
            while (cnt-- > 0) {
                TreeNode t = queue.poll();
                if (t == null) {
                    continue;
                }
                result.add(t.val);
                queue.add(t.left);
                queue.add(t.right);
            }
        }
        return result;
    }

    public static void main(String[] args) {

    }
}
【每日寄語】 每天給自己一個希望,試著不為明天而煩惱,不為昨天而嘆息,只為今天更美好。

相關文章