这是一个基于蚀的项目。 因此,附件可能会解压缩并在日食中运行。
eclipse已使用Juno和Java 7。 首先,应检查代码并运行。 然后,该博客可能会被转载。
=====================================
基于堆栈的二叉树遍历实现。 ArrayList <Integer>结果变量将具有遍历结果
在此示例中,我已将节点中的数据添加到ArrayList中。
Entry.java应该作为Java应用程序运行。 此类基本上测试功能。
仔细检查代码可以使您容易理解,始终在右分支之前探索根的左分支。 例如:子树中节点的堆栈插入顺序对于所有三个遍历都是相同的。
1)插入根-> 2)插入直到最后一个左子-> 3)弹出直到堆栈的顶部节点有右子-> 4)插入右子(此子现在是新的根,调用此节点为“新根1”)-> 5)递归地执行所有步骤,从2到4,直到堆栈的顶部节点再次为“新根1”->弹出“新根1”->弹出根
为了
=======
仅在以下情况下,才会将Node数据添加到ArrayList中
1>当任何一个叶节点弹出时,将添加其数据/节点
2>立即弹出左孩子后,将添加父级的数据/节点
3>如果父级没有左子级,则在将右子级推入堆栈之前,将立即添加其数据/节点。
预购
========
在对堆栈进行每个push()操作之后,将添加被推节点的数据/节点。
发布订单
==========
仅在以下情况下,才会将Node数据添加到ArrayList中
1>如果一个节点没有右子节点,但是有左子节点,则在弹出左子节点后立即,父节点的数据/节点
将被添加(在弹出父级后)。
2>弹出正确的儿子后,立即添加父节点的数据/节点(在弹出父节点之后)。
3>总是弹出一片叶子,并添加其数据/节点。
应该有一个更改,并且下面的行
斜体将由粗体 字替换。From: https://bytes.com/topic/algorithms/insights/958739-binary-tree-traversal-stack-data-structure