LeetCode111 | 二叉樹的最小深度
阿新 • • 發佈:2018-11-29
LeetCode111 | 二叉樹的最小深度
- 問題描述
給定一個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定二叉樹 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最小深度 2.
- 解題方法
利用遞迴,出口在root==NULL, 接下來考慮三種情況:(1)節點有左右子樹;(2)只有左子樹 (3)只有右子樹 - 程式碼
/** * 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) { if(root==NULL){ return 0; } int leftD; int rightD; if(root->left && root->right ){ leftD = minDepth(root->left) + 1; rightD = minDepth(root->right) + 1; return leftD < rightD ? leftD:rightD; } else if(root->right){ return minDepth(root->right) + 1; } else{ return minDepth(root->left) + 1; } } };