BinaryTreeInorderTraversal

二叉树的中序遍历

题目介绍

二叉树的中序遍历

给定一个二叉树的根节点 root ,返回它的 中序 遍历。

示例 1:

img

1
2
输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

1
2
输入:root = []
输出:[]

示例 3:

1
2
输入:root = [1]
输出:[1]

示例 4:

img

1
2
输入:root = [1,2]
输出:[2,1]

示例 5:

img

1
2
输入:root = [1,null,2]
输出:[1,2]

提示:

  • 树中节点数目在范围 [0, 100]
  • -100 <= Node.val <= 100

题目解法

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package algorithm;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class BinaryTreeInorderTraversal {

static List<Integer> ans = new ArrayList<>();
public static List<Integer> inorderTraversal(TreeNode root) {
dfs(root);
return ans;
}

private static void dfs(TreeNode root) {
if (root == null) {
return;
}
dfs(root.left);
ans.add(root.val);
dfs(root.right);
}

public static void main(String[] args) {
TreeNode n1 = new TreeNode(1);
TreeNode n2 = new TreeNode(2);
n1.left = null;
n1.right = n2;
TreeNode n3 = new TreeNode(3);
n2.left = n3;
System.out.println(Arrays.toString(inorderTraversal(n1).toArray()));
ans.clear();

TreeNode n4 = null;
System.out.println(Arrays.toString(inorderTraversal(n4).toArray()));
ans.clear();

TreeNode n5 = new TreeNode(1);
System.out.println(Arrays.toString(inorderTraversal(n5).toArray()));
ans.clear();

TreeNode n6 = new TreeNode(1);
TreeNode n7 = new TreeNode((2));
n6.left = n7;
System.out.println(Arrays.toString(inorderTraversal(n6).toArray()));
ans.clear();

TreeNode n8 = new TreeNode(1);
TreeNode n9 = new TreeNode(2);
n8.right = n9;
System.out.println(Arrays.toString(inorderTraversal(n8).toArray()));
ans.clear();
}

static class TreeNode {
int val;
TreeNode left;
TreeNode right;

TreeNode() {
}

TreeNode(int val) {
this.val = val;
}

TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
}

打印:

1
2
3
4
5
[1, 3, 2]
[]
[1]
[2, 1]
[1, 2]

思路:

思路上,太简单了。我决定下次面试的时候,让候选者写一个。确实不难,而且也能判断这个人是否写过代码。


BinaryTreeInorderTraversal
https://yangtzeshore.github.io/2021/06/27/BinaryTreeInorderTraversal/
作者
Chen Peng
发布于
2021年6月27日
许可协议