1. 程式人生 > >劍指offer----從上到下列印二叉樹----java實現

劍指offer----從上到下列印二叉樹----java實現

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

思路:其實就是二叉樹的層次遍歷問題,藉助於佇列來實現對二叉樹的層次遍歷

程式碼:

import java.util.ArrayList;
import java.util.LinkedList;
/*class TreeNode 
{
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }
}*/
public class LevelTest
{
   public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) 
   {
	ArrayList<Integer> list  = new ArrayList<Integer>();
        if(root == null)
           return list;
        LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
        TreeNode current = null;
        queue.offer(root);
        while(!queue.isEmpty())
        {
        	current = queue.poll();//出隊當前根節點
        	list.add(current.val);//將根節點元素的值新增到list中
        	if(current.left != null) 
        		queue.offer(current.left);
        	if(current.right != null)
        		queue.offer(current.right);
        }
        return list;
   
   }
}


相關推薦

offer-------之字列印

題目: 思路: 程式碼: struct TreeNode { int val; TreeNode *left; TreeNode *right; } void Print(BinaryTreeNOde* pRoot) { if(pRoot ==

offer----上到下列印----java實現

題目:從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 思路:其實就是二叉樹的層次遍歷問題,藉助於佇列來實現對二叉樹的層次遍歷 程式碼: import java.util.ArrayList;

offer》:[60]把列印成多行

題目:從上到下安層列印二叉樹,同一層的結點按從左到右的順序列印,每一層列印一行。例如,圖(1)中二叉樹以及列印結果為: 這個題其實很簡單,我們只需要設定兩個變數就可以搞定。一個變量表示當前層中還沒有

Offer》之“把列印成多行”

題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 程式碼實現 /* struct TreeNode { int val; struct TreeN

(C++)offer-60:把列印成多行(

劍指offer-60:把二叉樹列印成多行 目錄 1題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 2解析及答案 層次遍歷 跟上一題一樣,將奇偶行去掉

Offer面試題61:按之子型列印 Java實現

/************************************************************** * Copyright (c) 2016, * All rights reserved. * 版 本 號:v1.0

offer十八之的鏡像

img ret code 如果 close http span coder view 一、題目   操作給定的二叉樹,將其變換為源二叉樹的鏡像。二叉樹的鏡像定義: 源二叉樹 : 8 / 6 10

offer】8、中序遍歷的下一個節點

pan color col amp nullptr nbsp 父節點 public turn 題目 給定一個二叉樹和其中一個節點,找出中序遍歷的下一個節點。註意:樹的節點中除了有指向左右節點的指針,還有指向父節點的指針。 思路 (1)若該節點Node有右子樹,則下一個節點就

offer(57)的下一個節點

需要 div 2種 color 節點 兩種 我們 cti 指向 題目描述 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。註意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。 題目分析 這題一定要畫圖,因為只有畫圖我們才能分清楚下一個節

offer(4):重建

turn return null ptr 不存在 n) 地址 iterator eno 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,

Offer】16重建

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 時間限制:1秒;空間限制:32768K

Offer - 4:重建

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列 {1,2,4,7,3,5,6,8} 和中序遍歷序列 {4,7,2,1,5,3,8,6},則重建二叉樹並返回 題目連結:http

offer 58. 對稱的

題目描述 請實現一個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。 思路: 二叉樹映象相同是對稱的,利用遞迴做。 參考答案: # -*- coding:utf-8 -*- # class TreeNode: #

offer——(14)的映象(交換

/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.va

offer-04:重建

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 public class Solution04 {

offer:對稱的java

/** * 題目: * 請實現一個函式,用來判斷一顆二叉樹是不是對稱的。 * 注意,如果一個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。 * */ public class P159_IsSymmerical { boolean

offer演算法題001 -- [的映象] by java

程式執行截圖: import java.util.HashMap; public class Algorithm1 { /* [二叉樹的映象] [題目] 操作給定

牛客網《Offer》 程式設計 23. 的後序遍歷序列

題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 解題思路 二叉搜尋樹的特點:後序遍歷的時候最後一個數是根節點。前面的數分為兩個部分,本別是左子樹部分和右子樹部分。左子樹

offer-39:平衡

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 思路 首先,什麼是平衡二叉樹?如果二叉樹中任意結點的左右子樹深度相差不超過1,那麼它就是平衡二叉樹。 最直接的做法,遍歷每個結點,藉助一個獲取樹深度的遞迴函式,根據該結點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進

offer】對稱的【python】

請實現一個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。 class TreeNode: def __init__(self, x):