Leetcode 111. 二叉樹的最小深度 dfs
阿新 • • 發佈:2018-12-24
給定一個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定二叉樹 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回它的最小深度 2.
求最小深度,分三種情況。如果左右子樹都不為空,則遞迴求他們兩者的最小值,若左(右)子樹不為空,則遞迴下去。
Java:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int minDepth(TreeNode root) { if(root==null) return 0; if(root.left!=null&&root.right!=null) return Math.min(minDepth(root.left)+1,minDepth(root.right)+1); else if(root.right!=null) return minDepth(root.right)+1; else return minDepth(root.left)+1; } }
C++:
/** * 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; if(root->left&&root->right) return min(minDepth(root->left),minDepth(root->right))+1; else if(root->right) return minDepth(root->right)+1; else return minDepth(root->left)+1; } };