Skip to content

Commit 3cfbb64

Browse files
authored
Merge pull request gzc426#375 from ADemoDemo/master
提交二叉树层次遍历 广度遍历
2 parents 39b11b2 + 4fdd5aa commit 3cfbb64

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

2018.12.05-leetcode102/Avalon.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode(int x) { val = x; }
8+
* }
9+
*/
10+
class Solution {
11+
public List<List<Integer>> levelOrder(TreeNode root) {
12+
List<List<Integer>> list = new ArrayList<List<Integer>>();
13+
//List<TreeNode> templist=new ArrayList<TreeNode>();//这个list 没有实现对应接口
14+
LinkedList<TreeNode> llist = new LinkedList<TreeNode>();//但是这个 linkedlist 实现了 deque 接口
15+
//LinkedList<TreeNode> templist = new LinkedList<TreeNode>();//临时队列-用于存放同一排
16+
if (root == null)return list;
17+
llist.add(root);
18+
TreeNode current;
19+
while (!llist.isEmpty() ) {
20+
List<Integer> templist = new ArrayList<Integer>();
21+
int templen = llist.size();
22+
for (int i=0;i<templen;i++){
23+
current = llist.poll();
24+
templist.add(current.val);
25+
if (current.left != null)
26+
llist.add(current.left);
27+
if (current.right != null)
28+
llist.add(current.right);
29+
}
30+
list.add(templist);
31+
}
32+
33+
return list;
34+
}
35+
}

2018.12.06-leetcode103/Avalon.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode(int x) { val = x; }
8+
* }
9+
*/
10+
class Solution {
11+
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
12+
List<List<Integer>> result = new ArrayList<>();
13+
if (root == null) return result;
14+
LinkedList<TreeNode> queue = new LinkedList<>();
15+
queue.add(root);
16+
TreeNode current;
17+
List<Integer> tempilist;
18+
int ilistlen;
19+
boolean isleftbegin = true;
20+
while (!queue.isEmpty()) {
21+
List<Integer> intlist = new ArrayList<>();
22+
int qlen = queue.size();
23+
for (int i = 0; i < qlen; i++) {
24+
current = queue.poll();
25+
intlist.add(current.val);
26+
if (current.left != null)
27+
queue.add(current.left);
28+
if (current.right != null)
29+
queue.add(current.right);
30+
}
31+
if (!isleftbegin) {
32+
tempilist = new ArrayList<>();
33+
ilistlen = intlist.size();
34+
for (int i=0;i<ilistlen;i++){
35+
tempilist.add(intlist.get(ilistlen-1-i));
36+
}
37+
intlist = tempilist;
38+
}
39+
result.add(intlist);
40+
isleftbegin = !isleftbegin;
41+
}
42+
return result;
43+
}
44+
}

0 commit comments

Comments
 (0)