Easy!
题目描述:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回它的最小深度 2.
解题思路:
二叉树的经典问题之最小深度问题就是就最短路径的节点个数,还是用深度优先搜索DFS来完成,万能的递归啊。。。请看代码。
C++解法一:
1 /** 2 * Definition for binary tree 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 if (root == NULL) return 0;14 if (root->left == NULL && root->right == NULL) return 1;15 16 if (root->left == NULL) return minDepth(root->right) + 1;17 else if (root->right == NULL) return minDepth(root->left) + 1;18 else return 1 + min(minDepth(root->left), minDepth(root->right));19 }20 21 };