【JAVA】二叉树的非递归后序遍历
发布日期:2022-03-15 19:30:55 浏览次数:9 分类:技术文章

本文共 792 字,大约阅读时间需要 2 分钟。

public List
postorderTraversal(TreeNode root) { System.out.println("后序遍历"); List
list = new ArrayList<>(); if (root != null) { /** * 先序遍历只需要一个栈就可以实现的原因是因为先序遍历就是头左右 直接按照入栈的顺序打印即可实现,但是后序遍历是要求左右头 * 我们需要将左右节点都打印后才可以打印头节点,我们就需要将头节点存储 并且保存打印的顺序,所以我们需要借助第二个栈来帮助我们 */ Stack
stack = new Stack<>(); Stack
help = new Stack<>(); stack.push(root); while (!stack.isEmpty()) { // 将头节点压入help栈中存储 TreeNode cur = stack.pop(); help.push(cur); /** * 因为stack栈不是打印的那个栈,所以要想help栈中先打印左子树 stack栈中就要先放入左子树,让右子树先进入help栈 */ if (cur.left != null) { stack.push(cur.left); } if (cur.right != null) { stack.push(cur.right); } } while (!help.isEmpty()) { // 打印 list.add(help.pop().val); } } return list; }

转载地址:https://blog.csdn.net/weixin_58104242/article/details/121502874 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【JAVA】二叉树的非递归前序遍历
下一篇:JAVA(2021-11-26)leetcode每日一题---- 二叉搜索树中的搜索

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月06日 04时44分18秒