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

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;
}

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

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

个人主页:星不易

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

相关推荐
毕设源码-朱学姐2 分钟前
【开题答辩全过程】以 日程管理系统为例,包含答辩的问题和答案
java
yuniko-n4 分钟前
【牛客面试 TOP 101】链表篇(一)
数据结构·算法·链表·面试·职场和发展
a努力。5 分钟前
京东Java面试被问:双亲委派模型被破坏的场景和原理
java·开发语言·后端·python·面试·linq
小毛驴85011 分钟前
Maven同时配置阿里云仓库和私有仓库
java·阿里云·maven
2501_9418053111 分钟前
从微服务网关到统一安全治理的互联网工程语法实践与多语言探索
前端·python·算法
刘975312 分钟前
【第25天】25c#今日小结
java·开发语言·c#
源代码•宸13 分钟前
Leetcode—1161. 最大层内元素和【中等】
经验分享·算法·leetcode·golang
不如打代码KK14 分钟前
Springboot如何解决跨域问题?
java·spring boot·后端
豆沙沙包?17 分钟前
2026年--Lc330-394. 字符串解码(栈)--java版
java·开发语言
蓝程序17 分钟前
Spring AI学习 程序接入大模型
java·人工智能·spring