面试题16:递归计算二叉树的最大、最小深度
用递归方法计算二叉树的最大、最小深度,注意他们之间的区别
- 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.
- Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
class Solution { public: int run(TreeNode *root) { if(root == nullptr) return 0; if(root->left == nullptr) { return run(root->right) + 1; } if(root->right == nullptr){ return run(root->left) + 1; } int left = run(root->left); int right = run(root->right); return min(left,right)+1; } };
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 13 int maxDepth(TreeNode *root) { 14 int res = 0; 15 maxDepth(root, res); 16 return res; 17 } 18 19 int maxDepth(TreeNode* root, int& depth) { 20 if(root == nullptr) return 0; 21 22 int left = maxDepth(root->left,depth); 23 int right = maxDepth(root->right,depth); 24 int d = max(left,right) + 1; 25 if(d > depth){ 26 depth = d; 27 } 28 return d; 29 } 30 };