本文共 866 字,大约阅读时间需要 2 分钟。
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ /*思路: 终止条件:走到空节点 返回什么:返回左右子树上的最小深度+1 本级递归应该做什么:求左右子树上的最小深度 */class Solution { public: int minDepth(TreeNode* root) { if(root==nullptr) return 0; int left=minDepth(root->left); int right=minDepth(root->right); if(left==0){ //应对只有右子树的情况 return right+1; } if(right==0){ //应对只有左子树的情况 return left+1; } return min(right,left)+1; } };
转载地址:http://gbfdi.baihongyu.com/