111. 二叉树的最小深度


111. 二叉树的最小深度

题目:

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。



示例 1:


输入:root = [3,9,20,null,null,15,7]
输出:2
示例 2:

输入:root = [2,null,3,null,4,null,5,null,6]
输出:5


提示:

树中节点数的范围在 [0, 105] 内
-1000 <= Node.val <= 1000

题解:

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     int minDepth(TreeNode* root) 
13     {
14         if(!root) return 0;    
15         int lnode = minDepth(root->left), rnode = minDepth(root->right);
16         if(lnode && rnode) return min(lnode, rnode) + 1;
17         return lnode ? lnode + 1 : lnode + rnode + 1;
18     }
19 };