目錄給定乙個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
示例:給定二叉樹 [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...