LeetCode111 二叉树的最小深度
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
可以
1 /** 2 * Definition for a binary tree node. 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 private: 12 int ans; 13 public: 14 int minDepth(TreeNode* root) { 15 ans=INT_MAX; 16 if(!root) 17 return 0; 18 recursive(root,0); 19 return ans; 20 } 21 22 void recursive(TreeNode* curNode, int curdepth){ 23 ++curdepth; 24 if(curNode->left==nullptr && curNode->right==nullptr) 25 ans=min(ans,curdepth); 26 if(curNode->left!=nullptr) 27 recursive(curNode->left,curdepth); 28 if(curNode->right!=nullptr) 29 recursive(curNode->right,curdepth); 30 } 31 };
递归,就是dfs,在树平衡状态下效率比较高。如果用bfs在树深度比较深的时候效率更高,因为遇到第一个空节点就可以返回。