從上往下列印二叉樹
題目描述
從上往下列印出二叉樹的每個節點,同層節點從左至右列印。
題目連結: 從上往下列印二叉樹
程式碼
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) {
}
}
【每日寄語】 每天給自己一個希望,試著不為明天而煩惱,不為昨天而嘆息,只為今天更美好。