要求:此題正好和Maximum Depth of Binary Tree一題是相反的,即尋找二叉樹的最小的深度值:從根節點到最近的葉子節點的距離。
結題思路:和找最大距離不同之處在於:找最小距離要注意(l<r)? l+1:r+1的區別應用,因為可能存在左右子樹為空的情況,此時值就為0,但顯然值是不為0的(只有當二叉樹為空才為0),所以,在這里注意一下即可!
代碼如下:
1 struct TreeNode { 2 int val; 3 TreeNode *left; 4 TreeNode *right; 5 TreeNode(int x): val(x),left(NULL), right(NULL) {} 6 }; 7 8 int minDepth(TreeNode *root) 9 { 10 if (NULL == root) 11 return 0; 12 int l = minDepth(root->left); 13 int r = minDepth(root->right); 14 if (!l) 15 return r+1; 16 if (!r) 17 return l+1; 18 return (l<r)?l+1:r+1; 20 }