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