二叉樹的層級遍歷,居然可以用遞迴

2021-10-06 03:07:44 字數 972 閱讀 6842

看這麼一道題目,取自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 ...