標籤:style blog color strong io for 代碼 div
思路:用遞迴的方法求解。
輸入:二叉樹的根節點;
輸出:二叉樹的最小深度。
最小深度的定義:從根節點到葉子節點的最短路徑上的節點數。
演算法如下:
將二叉樹分為這麼幾種情況:
- 傳入的根節點為空白,返回NULL;
- 傳入根節點不為空白,左子樹為空白,右子樹為空白,返回最小深度1;
- 傳入根節點不為空白,左子樹為空白,右子樹不為空白,返回右子樹的最小深度+1;
- 傳入根節點不為空白,左子樹不為空白,右子樹為空白,返回左子樹的最小深度+1;
- 傳入根節點不為空白,左右子樹都不為空白,則返回左右子樹中最小深度的較小值+1.
代碼如下:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int minDepth(TreeNode *root) { if(root == NULL ) return NULL; if(root->left==NULL && root->right == NULL) return 1; else if(root->left == NULL && root->right !=NULL) return minDepth(root->right)+1; else if(root->left !=NULL && root->right ==NULL) return minDepth(root->left)+1; else if(root->left !=NULL && root->right != NULL) return minDepth(root->left)<=minDepth(root->right)?(minDepth(root->left)+1):(minDepth(root->right)+1); } };