Skip to content

Commit f025e1f

Browse files
author
haotf
committed
二叉树遍历、深度、直径
1 parent beb5593 commit f025e1f

5 files changed

+167
-0
lines changed

Diff for: 104.二叉树的最大深度.java

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* @lc app=leetcode.cn id=104 lang=java
3+
*
4+
* [104] 二叉树的最大深度
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* public class TreeNode {
11+
* int val;
12+
* TreeNode left;
13+
* TreeNode right;
14+
* TreeNode() {}
15+
* TreeNode(int val) { this.val = val; }
16+
* TreeNode(int val, TreeNode left, TreeNode right) {
17+
* this.val = val;
18+
* this.left = left;
19+
* this.right = right;
20+
* }
21+
* }
22+
*/
23+
class Solution {
24+
public int maxDepth(TreeNode root) {
25+
if (root == null) {
26+
return 0;
27+
}
28+
return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
29+
}
30+
}
31+
// @lc code=end

Diff for: 144.二叉树的前序遍历.java

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
4+
/*
5+
* @lc app=leetcode.cn id=144 lang=java
6+
*
7+
* [144] 二叉树的前序遍历
8+
*/
9+
10+
// @lc code=start
11+
/**
12+
* Definition for a binary tree node.
13+
* public class TreeNode {
14+
* int val;
15+
* TreeNode left;
16+
* TreeNode right;
17+
* TreeNode() {}
18+
* TreeNode(int val) { this.val = val; }
19+
* TreeNode(int val, TreeNode left, TreeNode right) {
20+
* this.val = val;
21+
* this.left = left;
22+
* this.right = right;
23+
* }
24+
* }
25+
*/
26+
class Solution {
27+
public List<Integer> preorderTraversal(TreeNode root) {
28+
List<Integer> list = new ArrayList<Integer>();
29+
if (root == null) {
30+
return list;
31+
}
32+
33+
list.add(root.val);
34+
list.addAll(preorderTraversal(root.left));
35+
list.addAll(preorderTraversal(root.right));
36+
return list;
37+
}
38+
}
39+
// @lc code=end

Diff for: 226.翻转二叉树.java

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* @lc app=leetcode.cn id=226 lang=java
3+
*
4+
* [226] 翻转二叉树
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* public class TreeNode {
11+
* int val;
12+
* TreeNode left;
13+
* TreeNode right;
14+
* TreeNode() {}
15+
* TreeNode(int val) { this.val = val; }
16+
* TreeNode(int val, TreeNode left, TreeNode right) {
17+
* this.val = val;
18+
* this.left = left;
19+
* this.right = right;
20+
* }
21+
* }
22+
*/
23+
class Solution {
24+
public TreeNode invertTree(TreeNode root) {
25+
if (root == null)
26+
return null;
27+
TreeNode tmp = root.left;
28+
root.left = root.right;
29+
root.right = tmp;
30+
invertTree(root.left);
31+
invertTree(root.right);
32+
return root;
33+
}
34+
}
35+
// @lc code=end

Diff for: 543.二叉树的直径.java

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* @lc app=leetcode.cn id=543 lang=java
3+
*
4+
* [543] 二叉树的直径
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* public class TreeNode {
11+
* int val;
12+
* TreeNode left;
13+
* TreeNode right;
14+
* TreeNode() {}
15+
* TreeNode(int val) { this.val = val; }
16+
* TreeNode(int val, TreeNode left, TreeNode right) {
17+
* this.val = val;
18+
* this.left = left;
19+
* this.right = right;
20+
* }
21+
* }
22+
*/
23+
class Solution {
24+
private int maxDiameter = 0;
25+
26+
public int diameterOfBinaryTree(TreeNode root) {
27+
traverse(root);
28+
return maxDiameter;
29+
}
30+
31+
private int traverse(TreeNode root) {
32+
if (root == null) {
33+
return 0;
34+
}
35+
// 计算左右子树高度
36+
int left = traverse(root.left);
37+
int right = traverse(root.right);
38+
// 更新最大直径
39+
maxDiameter = Math.max(left + right, maxDiameter);
40+
41+
return 1 + Math.max(left, right);
42+
}
43+
}
44+
// @lc code=end

Diff for: TreeNode.java

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
public class TreeNode {
2+
int val;
3+
TreeNode left;
4+
TreeNode right;
5+
6+
TreeNode() {
7+
}
8+
9+
TreeNode(int val) {
10+
this.val = val;
11+
}
12+
13+
TreeNode(int val, TreeNode left, TreeNode right) {
14+
this.val = val;
15+
this.left = left;
16+
this.right = right;
17+
}
18+
}

0 commit comments

Comments
 (0)