LeetCode 第144題 二叉數的前序遍歷
阿新 • • 發佈:2019-03-08
輸出 root 一個 ont etc mil 叠代 oid while
給定一個二叉樹,返回它的 前序 遍歷。
示例:
輸入: [1,null,2,3]
1
\
2
/
3
輸出: [1,2,3]
進階: 遞歸算法很簡單,你可以通過叠代算法完成嗎?
思路: 與二叉樹前序遍歷類似.
1 class Solution144 {
2
3 List<Integer> res = new ArrayList<>();
4
5 //遞歸
6 public List<Integer> preorderTraversal(TreeNode root) {
7 search(root);
8 return res;
9 }
10
11 void search(TreeNode root) {
12 if (root != null) {
13 res.add(root.val);
14 search(root.left);
15 search(root.right);
16 }
17 }
18
19 //非遞歸
20 public List<Integer> preorderTraversal_2(TreeNode root) {
21 Stack<TreeNode> stack = new Stack<>();
22 TreeNode currNode = root;
23 while (currNode != null || !stack.isEmpty()) {
24 while (currNode != null) {
25 res.add(currNode.val);
26 stack.push(currNode);
27 currNode = currNode.left;
28 }
29
30 currNode = stack.pop();
31 currNode = currNode.right;
32 }
33
34 return res;
35 }
36 }
LeetCode 第144題 二叉數的前序遍歷