Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int minDepth(TreeNode* root) { queue<TreeNode*> nodes; if(NULL==root) return 0; nodes.push(root); int i=1;//记录深度 while(!nodes.empty()) { int length=nodes.size(); int j=0; while(j<length) { TreeNode* tmpNode=nodes.front(); if(!tmpNode->left && !tmpNode->right) return i;//左右子树均为空,直接返回其深度 if(tmpNode->left) nodes.push(tmpNode->left); if(tmpNode->right) nodes.push(tmpNode->right); nodes.pop(); j++; } i++; } return i; } };
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int maxDepth(TreeNode* root) { if(NULL==root) return 0; int left=maxDepth(root->left);//先求左右子树的深度 int right=maxDepth(root->right); return 1+(left>right?left:right); } };
最大最小深度的求法不一样。