// 0
// 2 1
// 3
// 4
//二叉樹的層序遍歷
//用乙個佇列,先將根節點放入
// 佇列不空的時候就將第乙個節點輸出列印,這個節點的左子樹不空時,將左節點入隊,右子樹不空時就將右節點入隊
private
static arraylist
help
(treenode root)
q.offer
(root)
;while
(q.isempty()
!=true)if
(temp.right != null)
}return res;
}
output:
//二叉樹的層序遍歷,每層分別放在list中輸出
//將根節點放入佇列中,佇列不空的時候,計算佇列的大小,for迴圈中彈出佇列首的元素,如果他的左子樹不空就壓入左子節點,如果右子樹不空就壓入右子節點
//for迴圈佇列的size次,將本層節點都存入list
private
static arraylist
>
levelorderhelp
(treenode root)
q.offer
(root)
;while
(q.isempty()
!=true)if
(temp.right != null)
} res.
add(l);}
return res;
}
output:
與二相同,只是輸出時倒序輸出
如上圖所示,從右邊看上去的輸出應該是:0 1 3 4
原理:層序遍歷二叉樹,將每一層的最後乙個元素輸出即為結果
private
static arraylist
seerightanlgle
(treenode root)
q.offer
(root)
;while
(q.isempty()
!=true)if
(temp.right != null)
//找到每一層的最後乙個節點輸出
if(i == count -1)
}}return res;
}
output:
那同理,如果要輸出從左邊看上去的值,輸出每一層的第乙個節點即可。
private
static arraylist
>
zhiprint
(treenode root)
q.offer
(root)
;int depth =0;
//用來判斷層數,計算是奇數還是偶數
while
(!q.
isempty()
)}else
}while
(cur < count)
if(temp.right != null)
cur++;}
res.
add(l);}
return res;
}
output: 二叉樹層序遍歷 求二叉樹的層序遍歷
給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 3 9,20 15,7 示例1 輸入 返回值 1 2 示例2輸入 返回值 1 2,3 4,5 解題思路 重點是如何把在一層的節點放到一起,設定乙個引數專門放一層的節點 class t...
層序遍歷二叉樹
要求 設計乙個演算法層序遍歷二叉樹 同一層從左到右訪問 我寫了乙個演算法 用乙個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。status hierarchybitree bitree t,status visit telemtype e destroyqueue q 釋放佇列空間 return...
二叉樹層序遍歷
主要流程 確定root非空 根指標進佇列 佇列非空就一直迴圈 依次掃瞄目前佇列中所有元素 新增的不算 從佇列取出第一元素 將值放入結果vector中 判斷左右子節點非空,並依次入隊 將本次結果放入二維陣列中 如果需要按層逆序輸出的話,在這裡將二維結果倒排一下 返回二維結果 vector levelo...