【JAVA】二叉树的非递归后序遍历
发布日期:2022-03-15 19:30:55
浏览次数:9
分类:技术文章
本文共 792 字,大约阅读时间需要 2 分钟。
public ListpostorderTraversal(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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月06日 04时44分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php函数serialize()与unserialize()
2021-06-30
PHP Webservice的发布与调用
2021-06-30
php反射类 ReflectionClass
2021-06-30
php扩展xdebug基本使用
2021-06-30
为 PHP 应用提速、提速、再提速
2019-04-27
Linux下gedit显示行号
2019-04-27
《Advanced PHP Programming》读书笔记
2019-04-27
让我们谈谈RAID
2019-04-27
jQuery日期选择器插件date-input
2019-04-27
PHP使用curl_multi_add_handle并行处理
2019-04-27
NP问题
2019-04-27
AT&T与Intel汇编语言的比较
2019-04-27
javascript解析json
2019-04-27
WinDbg安装与使用
2019-04-27
推荐阅读的多核编程技术书籍
2019-04-27
维基百科上的算法和数据结构链接很强大
2019-04-27
选择排序
2019-04-27
PHP session回收机制
2019-04-27
最新的全球编程语言,操作系统,web服务器等使用率分析报告
2019-04-27
用C语言写PHP扩展
2019-04-27