LeetCode 0144 Binary Tree Preorder Traversal
作者:互联网
1. 题目描述
2. Solution 1
1、思路分析
先序遍历: 根左右,递归实现。
2、代码实现
package Q0199.Q0144BinaryTreePreorderTraversal;
import DataStructure.TreeNode;
import java.util.ArrayList;
import java.util.List;
/*
先序遍历: 根左右
method 1: 递归做法
*/
public class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<Integer>();
helper(result, root);
return result;
}
private void helper(List<Integer> result, TreeNode root) {
if (root != null) {
result.add(root.val);
helper(result, root.left);
helper(result, root.right);
}
}
}
3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(n)
3. Solution 2
1、思路分析
使用栈,迭代实现。
2、代码实现
package Q0199.Q0144BinaryTreePreorderTraversal;
import DataStructure.TreeNode;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
/*
用Stack 代替 递归
*/
public class Solution2 {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> result = new LinkedList<>();
Deque<TreeNode> stack = new ArrayDeque<>();
TreeNode cur = root;
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
result.add(cur.val);
stack.push(cur);
cur = cur.left;
}
cur = stack.pop();
cur = cur.right;
}
return result;
}
}
3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(n)
标签:Binary,cur,Preorder,List,复杂度,Tree,result,import,root 来源: https://www.cnblogs.com/junstat/p/16299915.html