不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

题目链接

https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/

题目解析

Golang

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func minDepth(root *TreeNode) int {
if root == nil {
return 0
}
leftDepth := minDepth(root.Left)
rightDepth := minDepth(root.Right)
if root.Left == nil {
return 1 + rightDepth
}else if root.Right == nil {
return 1 + leftDepth
}

return 1 + min(leftDepth,rightDepth)
}

func min(a,b int)int {
if a < b {
return a
} else {
return b
}
}

递归-Recursion

通过函数体来循环调用自己。

Python代码模板

1
2
3
4
5
6
7
8
9
10
11
12
13
def Recursion(level,param1,param2,...):
#递归终结条件
if level > MAX_LEVEL:
process_result
return

#处理当前层逻辑
process(level,data...)

#下探到下一层
self.Recursion(level+1,p1,...)

#清理当前层

Java代码模板

阅读全文 »

题目

https://leetcode-cn.com/problems/binary-tree-inorder-traversal/

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<Integer>();
helper(root, result);
return result;
}
private void helper(TreeNode root, List<Integer> ret) {
if (root != null) {
helper(root.left, ret);
ret.add(root.val);
helper(root.right, ret);
}
}
}

开始这篇文章之前,我特别查了learnstudy的区别,虽然两者都表示学习,但当我查了learn 和study有什么区别?的结果后,决定用learn,因为我们学习算法肯定是要学有所得,而不是重视学算法的过程!

引用一些大佬的话(持续更新)

覃超

亮老师

阅读全文 »