之字形列印二叉樹(Java 遞迴實現)

2021-08-22 08:24:35 字數 1111 閱讀 8865

分析:

按照之字形列印,可以認為奇數層從左向右列印,偶數層從右向左列印

同時,本次最先訪問到的結點的子節點資訊在下一次列印時為最後列印,符合先進後出的邏輯,故可以使用棧來完成

結點類:

class

treenode

}

輸出方法具體實現:

public

static

void

print(treenode root)

int level = 1;//從根節點第一層遍歷

stackstackone = new stack<>();//用來記錄當前遍歷的層結點

stackone.push(root);

printtree(level,stackone);

}/**

* 遞迴遍歷整個樹

* @param level 當前樹的層次

* @param from 當前層的所有結點資訊

*/public

static

void

printtree(int level,stackfrom)

//用來儲存下一層所有結點的資訊

stackto = new stack<>();

system.out.print(level+" : ");

//當前層次為奇數,從左向右遍歷

if (level %2 != 0)

if (node.right != null) }}

}else

if (node.left != null) }}

}system.out.println();

//遞迴

printtree(++level,to);

}

測試:

public static void main(string args)
輸出結果:

1 : 1   

2 : 3 2

3 : 4 5 6 7

之字形列印二叉樹

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。include include include binarytree.h using namespace std void bprint binarytre...

之字形列印二叉樹

請實現乙個函式按照之字形順序從上向下列印二叉樹。即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。樣例輸入如下圖所示二叉樹 8,12,2,null,null,6,4,null,null,null,null 8 12 2 6 4 輸出 8 2...

之字形列印二叉樹

思路 首先我們需要逐層列印二叉樹,然後根據每一層的狀態判定是從左到右,還是從右到左。首先問題的核心其實是從上到下,從左到右列印二叉樹,只不過後面題目多了兩個要求,所以我們2 的大體框架應該是基於從上到下列印二叉樹 其次逐層列印二叉樹,實際上就是讓我們對每一層設定標誌位,然後根據標誌位去決定列印的情況...