算法通关村第七关|黄金挑战|迭代实现二叉树的前、中、后序遍历

1.迭代实现前序遍历

java 复制代码
public List<Integer> preOrderTraversal(TreeNode root) {
	List<Integer> res = new ArrayList<Integer>();
	if (root == null) {
        return res;
    }
	Deque<TreeNode> stack = new LinkedList<TreeNode>();
	TreeNode node = root;
	while (!stack.isEmpty() || node != null) {
        while (node != null) {
            res.add(node.val);
            stack.push(node);
            node = node.left;
        }
        node = stack.pop();
        node = node.right;
    }
	return res;
}

2.迭代实现中序遍历

java 复制代码
public List<Integer> inorderTraversal(TreeNode root) {
	List<Integer> res = new ArrayList<Integer>();
	Deque<TreeNode> stack = new LinkedList<TreeNode>();
	while (root != null || !stack.isEmpty()) {
        while (root != null) {
            stack.push(root);
            root = root.left;
        }
        root = stack.pop();
        res.add(root.val);
        root = root.right;
    }
	return res;
}

3.迭代实现后序遍历(反转法)

将后序遍历的结果反过来就是类似于前序遍历的结果,只不过前序遍历先找左孩子,后序反过来是先找右孩子。

java 复制代码
public List<Integer> postOrderTraversal(TreeNode root) {
	List<Integer> res = new ArrayList<>();
	if (root == null) {
        return res;
    }
	Deque<TreeNode> stack = new LinkedList<TreeNode>();
	TreeNode node = root;
	while (!stack.isEmpty() || node != null) {
        while (node != null) {
            res.add(node.val);
            stack.push(node);
            node = node.right;
        }
        node = stack.pop();
        node = node.left;
    }
	Collections.reverse(res);
	return res;
}

如果对您有帮助,请点赞关注支持我,谢谢!❤

如有错误或者不足之处,敬请指正!❤

个人主页:星不易

算法通关村专栏:不易|算法通关村

相关推荐
Gerardisite5 分钟前
CRM、ERP、OA 如何连接企业微信?QiWe 提供标准化解决方案
java·python·机器人·自动化·企业微信
城管不管7 分钟前
Maven Helper
java·macos·intellij-idea
ch.ju9 分钟前
Java程序设计(第3版)第三章——数组的动态获取
java·开发语言
Java知识技术分享20 分钟前
策略模式的两种实现:抽象类和接口
java·spring·策略模式
液态不合群24 分钟前
Redis--哨兵机制与CAP定理
java·redis·bootstrap
曹牧26 分钟前
Java:PDF文件扁平化处理
java·开发语言·pdf
灰色人生qwer26 分钟前
解决IDEA运行Java程序jdk版本不匹配问题
java·开发语言·intellij-idea
宵时待雨28 分钟前
回溯算法专题1:递归
数据结构·c++·笔记·算法·leetcode·深度优先
yaoxin52112330 分钟前
405. Java 文件操作基础 - 装饰者模式与 I/O Streams
java·开发语言·python
xiufeia31 分钟前
后端项目初始化的一些小坑点
java·junit·maven·idea