Minimum Depth of Binary Tree leetcode java

左手的ㄟ右手 2022-03-31 09:39 231阅读 0赞

题目

Given a binary tree, find its minimum depth.

The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

题解

递归解法急速判断左右两边子树哪个depth最小,要注意如果有个节点只有一边孩子时,不能返回0,要返回另外一半边的depth。

递归解法:

1 public int minDepth(TreeNode root) {
2 if(root == null)
3 return 0;
4 int minleft = minDepth(root.left);
5 int minright = minDepth(root.right);
6 if(minleft==0 || minright==0)
7 return minleft>=minright?minleft+1:minright+1;
8 return Math.min(minleft,minright)+1;
9 }

非递归解法:

1 public int minDepth(TreeNode root) {
2 if(root == null)
3 return 0;
4
5 int depth = 1;//The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
6 LinkedList queue = new LinkedList();
7 queue.add(root);
8 int curnum = 1;
9 int nextnum = 0;
10 while(!queue.isEmpty()){
11 TreeNode cur = queue.poll();
12 curnum—;
13
14 if(cur.left == null && cur.right == null)
15 return depth;
16
17 if(cur.left != null){
18 queue.add(cur.left);
19 nextnum++;
20 }
21
22 if(cur.right != null){
23 queue.add(cur.right);
24 nextnum++;
25 }
26
27 if(curnum == 0){
28 curnum = nextnum;
29 nextnum = 0;
30 depth++;
31 }
32 }
33 return depth;
34 }

发表评论

表情:
评论列表 (有 0 条评论,231人围观)

还没有评论,来说两句吧...

相关阅读