1. 程式人生 > >列印二叉樹行和列座標

列印二叉樹行和列座標

需求:在jsp頁面顯示一個二叉樹,資料儲存在資料庫以parentId 來模擬二叉樹資料
解決方案:拿到資料庫的資料,然後在map裡面以二叉樹的行+列號作為key來儲存資料。jsp頁面兩層迴圈就可以顯示出來了。
原理圖:
這裡寫圖片描述

import java.util.HashMap;
import java.util.Map;

public class Test {
    private final static int total_layer = 4;

    public static void main(String[] args) {
        Map<Integer,Integer> layer_count = new
HashMap<Integer,Integer>(); t(0, layer_count); } /** * 遍歷制定層數的二叉樹 * @param current_layer 當前層數 * @param layer_count 當前層遍歷的位置 */ private static void t(int current_layer,Map<Integer,Integer> layer_count){ current_layer += 1; if(current_layer <= total_layer){ for
(int i=1;i<=2;i++){ //定位當前層已經遍歷了第幾次 if(layer_count.containsKey(current_layer)){ layer_count.put(current_layer, layer_count.get(current_layer)+1); }else{ layer_count.put(current_layer, 1); } System.out.println(current_layer+"---"
+layer_count.get(current_layer)); t(current_layer,layer_count); } } } }

這裡面主要用到了java引數傳遞兩種方式:
實參:Java的基本資料型別,如int,double等在函式的引數傳遞時,傳遞的是副本。String也屬於這一範疇。
形參:而如果是物件,則傳遞的是引用。

相關推薦

列印座標

需求:在jsp頁面顯示一個二叉樹,資料儲存在資料庫以parentId 來模擬二叉樹資料 解決方案:拿到資料庫的資料,然後在map裡面以二叉樹的行+列號作為key來儲存資料。jsp頁面兩層迴圈就可以顯示

劍指offer系列——按之字形順序列印,把列印成多,序列化二

按之字形順序列印二叉樹 題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 解題思路: 法一: 需要兩個棧。我們在列印某一行節點時,把下一層的子節點儲存到相應的棧裡。 如果

請實現一個函式按照之字形列印,即第一按照從左到右的順序列印,第二層按照從右至左的順序列印,第三按照從左到右的順序列印,其他以此類推。

 boolean flag1 = true ;                   //利用標誌位來控制順序,為true,則從左到右的順序,為false則相反      

演算法--分奇偶列印--佇列的應用

頭條的一道面試題,層序列印二叉樹,奇數行時從左到右,偶數行時從右到左。 如上所示,列印結果為 :   1    3  2   4   5   6   7   10   9  8 1. 普通的層序列印二叉樹,一般採用一個佇列,根節點入佇列,然後一次遍歷佇列中的節

列印,每後面回車

#include<iostream> #include<queue> using namespace std; struct Node { Node* left;

列印

在此程式碼中,用到了兩個佇列,佇列1用於進行列印、遍歷操作,佇列2用於臨時儲存資料,程式碼如下: vector<vector<int> > Print(TreeNode*

建立遍歷

mil inorder 推斷 microsoft con 是否 font pac node 二叉樹創建遍歷規則: 1.先序:根-左-右 2.中序:左-根-右 3.後序:左-右-根 二叉樹定義和輔助函數例如以下: struct node {

112. Path Sum路徑

aps exist display splay term post ase urn 數據結構 [抄題]: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such th

劍指offer 23. 從上往下列印

原題 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 Reference Answer 解題思路: 思路:用一個臨時陣列儲存需要列印的節點,如列印8時,將6和10存入臨時陣列 # -*- coding:utf-8 -*- # class TreeNode: #

從上往下列印 java

從上往下列印二叉樹 java 題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 思路: 按照層次遍歷的方法,使用佇列輔助。 1.將根結點加入佇列。 2.迴圈出隊,列印當前元素,若該結點有左子樹,則將其加入佇列,若有右子樹,將其加入佇列。 3.直到佇列為空,表明已經

【劍指Offer】22從上往下列印

題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 時間限制:1秒;空間限制:32768K 解題思路 思路和層次遍歷相似,定義兩個list一個用來記錄當前層的節點,一個用來記錄當前每個節點的左右孩子節點,迴圈列印更新。 Python程式碼: # -*- codi

劍指offer(九) 棧的壓入彈出序列,從上往下列印搜尋的後序遍歷序列

棧的壓入、彈出序列 題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出

劍指Offer 59. 按之字形順序列印

題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 題目地址 https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=

[劍指offer] --23.從上往下列印

題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNo

c語言 將一個維陣列的元素互換,存到另一個維陣列中

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

每日一題之 非遞迴後序遍歷列印所有路徑

描述 給一個二叉樹,列印其所有路徑 思路: 利用後序非遞迴遍歷,因為後序非遞迴遍歷的特性,對於每次訪問的節點,棧裡面存的元素都是當前節點的祖先,所以只要判斷當前節點是不是葉子節點,如果是葉子節點,那麼將棧中元素取出,和當前葉子節點組成一條路徑。 #include <

從上往下列印 (層序遍歷)JS演算法

   從上往下打印出二叉樹的每個節點,同層節點從左至右列印  //給定節點結構 /* function TreeNode(x) {     this.val = x;     this.left = nul

演算法題(三十七):按之字形順序列印

題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 分析 用兩個棧來實現,先把根結點放入s1,當行數為偶數時,s2從左到右放結點;當行數為奇數時,s1從右到左放結點; 筆者用j

《劍指offer》系列 從上往下列印(Java)

連結 牛客:從上往下列印二叉樹 題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 思路 題目給定函式返回的只是一個ArrayList,還是比較簡單的,這種型別題目基本都要藉助一個輔助的佇列,看程式碼大家應該都能理解。 程式碼 import ja

劍指offer 59. 按之字形順序列印

題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 思路: 與逐層列印二叉樹一樣,只是多了層數判定,依據層數做判定輸出。 按之字形順序列印二叉樹需要兩個棧。我們在列印某一行