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

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

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

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

个人主页:星不易

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

相关推荐
阳光阿盖尔6 分钟前
EasyExcel的基本使用——Java导入Excel数据
java·开发语言·excel
二十雨辰7 分钟前
[苍穹外卖]-12Apache POI入门与实战
java·spring boot·mybatis
程序员皮皮林7 分钟前
开源PDF工具 Apache PDFBox 认识及使用(知识点+案例)
java·pdf·开源·apache
蔚一8 分钟前
Java设计模式—面向对象设计原则(三) -----> 依赖倒转原则DIP(完整详解,附有代码+案例)
java·开发语言·设计模式·intellij-idea·依赖倒置原则
liang899913 分钟前
SpringSecurity原理解析(七):权限校验流程
java·开发语言
孙小二写代码15 分钟前
[leetcode刷题]面试经典150题之1合并两个有序数组(简单)
算法·leetcode·面试
little redcap20 分钟前
第十九次CCF计算机软件能力认证-1246(过64%的代码-个人题解)
算法
搁浅°87922 分钟前
IO文件拷贝
java·开发语言
Python私教26 分钟前
Python国产新 ORM 框架 fastzdp_sqlmodel 快速入门教程
java·数据库·python
Python私教27 分钟前
Python ORM 框架 SQLModel 快速入门教程
android·java·python