Skip to content

Commit 91f0df8

Browse files
committed
二叉树的先序遍历
1 parent 20c3d5c commit 91f0df8

File tree

4 files changed

+120
-0
lines changed

4 files changed

+120
-0
lines changed

LeetCode/Doc/先序遍历二叉树.md

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# binary-tree-preorder-traversal(先序遍历二叉树)
2+
3+
<center>知识点:树</center>
4+
5+
6+
## 题目描述
7+
8+
Given a binary tree, return the postorder traversal of its nodes' values.
9+
10+
For example:
11+
Given binary tree{1,#,2,3},
12+
13+
![image-20190413113855000](https://ws2.sinaimg.cn/large/006tNc79gy1g20usuv6s0j308y0860so.jpg)
14+
15+
return[1,2,3].
16+
17+
Note: Recursive solution is trivial, could you do it iteratively?
18+
19+
20+
给定一个二叉树,返回其先序遍历结果。
21+
22+
提示:递归解决方案是不值一提的,你选择迭代。
23+
24+
25+
## 解题思路
26+
27+
首先明确什么是先序遍历:对于二叉树访问顺序为根-左-右,即为先序遍历。
28+
29+
递归方式很简单,这里说一下迭代的思路,考虑如下二叉树:
30+
31+
![image-20190413125303689](https://ws1.sinaimg.cn/large/006tNc79gy1g20wxyvib7j30n80ggmyz.jpg)
32+
使用栈,入栈顺序为根、左,右。
33+
34+
35+
## 代码
36+
37+
[这里](../src/seven/Solution.java)
Binary file not shown.
Binary file not shown.

LeetCode/src/seven/Solution.java

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package seven;
2+
3+
/**
4+
* @author dmrfcoder
5+
* @date 2019-04-13
6+
*/
7+
8+
import java.util.ArrayList;
9+
import java.util.Stack;
10+
11+
/**
12+
* Definition for binary tree
13+
*/
14+
15+
class TreeNode {
16+
int val;
17+
TreeNode left;
18+
TreeNode right;
19+
20+
TreeNode(int x) {
21+
val = x;
22+
}
23+
}
24+
25+
public class Solution {
26+
public ArrayList<Integer> preorderTraversal(TreeNode root) {
27+
Stack<TreeNode> stack = new Stack<>();
28+
ArrayList<Integer> arrayList = new ArrayList<>();
29+
if (root == null) {
30+
return arrayList;
31+
}
32+
33+
34+
TreeNode curNode = root;
35+
arrayList.add(root.val);
36+
stack.push(root);
37+
38+
while (!stack.empty()) {
39+
if (curNode == null) {
40+
curNode = stack.pop();
41+
if (curNode.right != null) {
42+
arrayList.add(curNode.right.val);
43+
stack.push(curNode.right);
44+
curNode = curNode.right;
45+
} else {
46+
curNode = null;
47+
}
48+
continue;
49+
} else if (curNode.left != null) {
50+
arrayList.add(curNode.left.val);
51+
stack.push(curNode.left);
52+
53+
54+
}
55+
curNode = curNode.left;
56+
}
57+
58+
return arrayList;
59+
60+
}
61+
62+
public static void main(String args[]) {
63+
TreeNode root = new TreeNode(1);
64+
TreeNode node2 = new TreeNode(2);
65+
TreeNode node3 = new TreeNode(3);
66+
TreeNode node4 = new TreeNode(4);
67+
TreeNode node5 = new TreeNode(5);
68+
TreeNode node6 = new TreeNode(6);
69+
TreeNode node7 = new TreeNode(7);
70+
71+
root.left = node2;
72+
// root.right = node3;
73+
// node2.left = node4;
74+
// node2.right = node5;
75+
// node3.left = node6;
76+
// node3.right = node7;
77+
78+
Solution solution = new Solution();
79+
ArrayList<Integer> arrayList = solution.preorderTraversal(root);
80+
System.out.println(arrayList.toArray().toString());
81+
82+
}
83+
}

0 commit comments

Comments
 (0)