劍指offer 之 二叉樹(shù)按層遍歷

/*

public class TreeNode {

Objectval;

? ? TreeNodeleft;

? ? TreeNoderight;

? ? public TreeNode(Object val){

this.val = val;

? ? }

}*/


思路:加上last和nLast兩個(gè)變量,初始時(shí)都指向root, 然后每次遍歷時(shí),nLast指向當(dāng)前行的下一行的最后一個(gè)節(jié)點(diǎn),last指向當(dāng)前行的最后一個(gè)節(jié)點(diǎn)。如果last等于當(dāng)前打印的變量,即當(dāng)前打印的是最后一個(gè)節(jié)點(diǎn),輸出換行符,nLast 的值賦值給last;

/**

* 按層遍歷二叉樹(shù)

*/

public void searchTreeByCen(TreeNode root){

TreeNode last;

? ? TreeNode nLast;

? ? Queuequeue =new LinkedBlockingDeque<>();

? ? queue.add(root);

? ? last = root;

? ? nLast = root;

? ? while (!queue.isEmpty()){

TreeNode tmp = queue.poll();

? ? ? ? System.out.print(tmp.val+" ");

? ? ? ? if (tmp.left !=null){

queue.add(tmp.left);

? ? ? ? ? ? nLast = tmp.left;

? ? ? ? }

if (tmp.right !=null){

queue.add(tmp.right);

? ? ? ? ? ? nLast = tmp.right;

? ? ? ? }

if (last == tmp){

System.out.println();

? ? ? ? ? ? last = nLast;

? ? ? ? }

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容