赞
踩
root
,返回它节点值的 前序 遍历。
输入:root = [1,null,2,3] 输出:[1,2,3]
提示:
- 树中节点数目在范围
[0, 100]
内-100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗?
2.1 思路分析
2.2 代码实现
- class Solution {
- List<Integer> res = new ArrayList<>();
- public List<Integer> preorderTraversal(TreeNode root) {
- preOrder(root);
- return res;
- }
- private void preOrder(TreeNode root) {
- if(root == null) {
- return;
- }
- res.add(root.val);
- preOrder(root.left);
- preOrder(root.right);
- }
- }
2.3 复杂度分析
3.1 思路分析
3.2 代码实现
- class Solution {
- public List<Integer> preorderTraversal(TreeNode root) {
- List<Integer> res = new ArrayList<>();
- Deque<TreeNode> stack = new ArrayDeque<>();
- if(root == null) {
- return res;
- }
- res.add(root.val);
- stack.push(root);
- TreeNode node = root.left;
- //node != null作用是当栈中的根节点弹出时,此时栈为空,node指向右子节点
- while(node != null || !stack.isEmpty()) {
- while(node != null) {
- res.add(node.val);
- stack.push(node);
- node = node.left;
- }
- node = stack.pop();
- node = node.right;
- }
- return res;
- }
- }
3.3 代码优化
- class Solution {
- public List<Integer> preorderTraversal(TreeNode root) {
- List<Integer> res = new ArrayList<>();
- Deque<TreeNode> stack = new ArrayDeque<>();
- TreeNode node = root;
- //node != null作用是当栈中的根节点弹出时,此时栈为空,node指向右子节点
- while(node != null || !stack.isEmpty()) {
- while(node != null) {
- res.add(node.val);
- stack.push(node);
- node = node.left;
- }
- node = stack.pop();
- node = node.right;
- }
- return res;
- }
- }
3.4 复杂度分析
作者:LeetCode-Solution
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。