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在树深度比较深的时候效率更高,因为遇到第一个空节点就可以返回。

posted @ 2020-07-29 22:02  __rookie  阅读(148)  评论(0编辑  收藏  举报