LeetCode 二叉樹的平均值(遞迴 層序遍歷)

2021-09-18 08:25:31 字數 1644 閱讀 9926

給定乙個非空二叉樹, 返回乙個由每層節點平均值組成的陣列.

示例 1:

輸入:

3/ \

9 20

/ \

15 7

輸出: [3, 14.5, 11]

解釋:第0層的平均值是 3, 第1層是 14.5, 第2層是 11. 因此返回 [3, 14.5, 11].

注意:

節點值的範圍在32位有符號整數範圍內。

思路分析:我們可以採用先序遍歷,得到每一層的和以及每一層的節點個數,我們也可以使用層序遍歷,得到每一層的平均值。

方法一:遞迴法。使用先序遍歷,得到每一層的和以及每一層的節點個數,然後計算每一層的平均值。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

return result;

}//先序遍歷root,deepth代表的是root的深度

void

mydfs

(treenode* root,

int deepth, vector<

double

>

&result, vector<

int>

&deepcnt)

//先訪問根節點

if(result.

size()

== deepth)

else

//後訪問左子樹,再訪問右子樹

方法二:採用層序遍歷。逐層訪問二叉樹,得到每層的平均值。leetcode 二叉樹的層次遍歷

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

myqueue.

push

(root)

; treenode *tempnodeptr = null;

while

(!myqueue.

empty()

)if(tempnodeptr-

>right != null)

} result.

push_back

(tempsum / tempqueuesize)

;//將此層的平均值放入結果

leetcode 637 二叉樹的層平均值

給定乙個非空二叉樹,返回乙個由每層節點平均值組成的陣列.示例 1 輸入 3 9 20 15 7 輸出 3,14.5,11 解釋 第0層的平均值是 3,第1層是 14.5,第2層是 11.因此返回 3,14.5,11 注意 節點值的範圍在32位有符號整數範圍內。definition for a bin...

LeetCode 637 二叉樹的層平均值

題目 給定乙個非空二叉樹,返回乙個由每層節點平均值組成的陣列.示例 1 輸入 3 9 20 15 17 輸出 3,14.5,11 解釋 第0層的平均值是 3,第1層是 14.5,第2層是 11.因此返回 3,14.5,11 原始碼 definition for a binary tree node....

leetcode 637 二叉樹的層平均值

題目鏈結 給定乙個非空二叉樹,返回乙個由每層節點平均值組成的陣列。definition for a binary tree node.struct treenode class solution if node right results.push back total 1.0 n total 0 ...