111 二叉樹的最小深度(C )

2022-07-31 00:15:18 字數 1370 閱讀 3538

目錄給定乙個二叉樹,找出其最小深度。

最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

說明: 葉子節點是指沒有子節點的節點。

示例:給定二叉樹 [3,9,20,null,null,15,7],

3

/ \9 20

/ \

15 7

返回它的最小深度 2.

本體與二叉樹的最大深度類似,乙個是計算左右葉子結點的max,乙個是min。但需要注意的是,在遞迴函式中,對於空結點,我們都返回0,當求取最大深度使用max函式時,非空結點肯定比空結點的返回值大。但在求取最小深度min函式時,一般空結點會求得相對更小的值,因此這裡不能簡單的使用min函式替換max函式,而需要對是否為空結點進行乙個判斷。

自定義乙個將深度作為形參的函式,每次遞迴呼叫,作為形參傳入的深度就會加一。**如下:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

int mindepth(treenode* root)

};

不將深度作為形參,在函式中層層迭代逐漸累加求得深度大小,**如下:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

};

因為需要求取最小深度,因此我們使用廣度有限搜尋演算法逐層遍歷,求得的第乙個解即為本題答案。

每次把一層節點壓入佇列,同時判斷這些節點中是否含有葉子節點(即左右指標都為空),若有,說明找到了最近的那個葉子節點,返回層數,**如下。

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class solution

return -1;

}};

111 二叉樹的最小深度

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉節點的最短路徑的節點數量。解題思路 這題我想了很久。大概還是對遞迴不太熟悉吧。下面講解一下遞迴的思路 1.如果根節點是null,說明沒有深度。2.如果節點的左右兒子都不存在,說明只有自己,節點深度為1.3.如果節點沒有左兒子,但是有右兒子怎麼...

111 二叉樹的最小深度( )

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 920 157返回它的最小深度 2.注意 它是到最近的葉子節點,要多考慮根節點 class solution ...

111 二叉樹的最小深度

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最小深度 2.思路 求樹深用dfs,遞迴遍歷左子樹右子樹,取最小的深度。defini...