看這麼一道題目,取自leetcode
給你乙個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。
示例:二叉樹:[3,
9,20,
null
,null,15
,7],
3/ \
920/ \
157
返回其層次遍歷結果:[[
3],[
9,20]
,[15,
7]]
我想到的方法,是用棧來實現,把一層的結果同時入棧,再同時出棧,完成題目的要求,具體看**。
public list
>
levelorder
(treenode root)
reslist.
add(leverlist);}
return reslist;
}
看了別人的題解,居然用遞迴,很簡潔的實現了。覺得人家實現的很巧妙,貼出來,記錄下。
public list
>
levelorder
(treenode root)
list
> reslist =
newarraylist
<
>()
;private
void
recurse
(treenode node,
int level)
reslist.
get(level)
.add
(node.val)
;recurse
(node.left, level +1)
;recurse
(node.right, level +1)
;}
用遞迴來實現,很簡潔,不用複雜的運算,大寫的服! 二叉樹的層級遍歷
515.在每個樹行中找最大值 本題採用二叉樹的層級遍歷進行求解,分別處理每一層,從中找到最大值 definition for a binary tree node.public class treenode treenode int val treenode int val,treenode lef...
遞迴遍歷二叉樹
include include include 二叉鍊錶表示法 typedef struct tag bitnode bitnode 先序遍歷 void xianxuorder bitnode root 先根 printf c root data 左子樹 xianxuorder root lchil...
二叉樹遞迴遍歷
編寫簡單的程式對下圖二叉樹進行遍歷 先訪問根節點 printf c root ch 再遍歷左子樹 recursion root lchild 再遍歷右子數 recursion root rchild 再遍歷左子樹 recursion root lchild 先訪問根節點 printf c root ...