当前位置:网站首页>2022.06.23(LC_144,94,145_二叉树的前序、中序、后序遍历)

2022.06.23(LC_144,94,145_二叉树的前序、中序、后序遍历)

2022-06-24 07:06:00 Leeli9316

方法一:递归

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        preorder(root, list);
        return list;
    }
    public void preorder(TreeNode root, List<Integer> list) {
        if (root == null) return;
        list.add(root.val);
        preorder(root.left, list);
        preorder(root.right, list);
    }
}

方法二:迭代 

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> ans = new ArrayList<>();
        if (root == null) return ans;
        Deque<TreeNode> stack = new LinkedList<>();
        TreeNode node = root;
        //遍历终止条件:当前节点为空并且栈为空
        while (node != null || !stack.isEmpty()) {
            while (node != null) {
                stack.push(node);
                ans.add(node.val);
                //找到最左边的节点
                node = node.left;
            }
            node = stack.pop();
            node = node.right;
        }
        return ans;
    }
}

原网站

版权声明
本文为[Leeli9316]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Leeli9316/article/details/125435625