主要使用了一个方向值orien,记录在二叉树中搜索时的路径方向,比如由父节点到左子树时orien值为1,这样按照严格的行走规则,在一个while循环里就能遍历整棵树。
一个简单的例子:
一棵树为: 8
4 12
2 6 10 14
1 3 5 7 9 11 13 15
那么程序将采用一个相当于后序遍历的顺序对树进行遍历,对于一个节点,将先搜索左子树,再搜索右子树,然后输出该节点的值。根据orien值的不同,对遍历的下一步走向进行
选择,具体看printTree中的while循环。对于上面这棵树,输出顺序为:1 3 2 5 7 6 4 9 11 10 13 15 14 12 8。
程序没有测试一些特殊情况,可能存在bug,欢迎指正;若有啥问题欢迎交流!
本文介绍了一种使用常数存储空间的非递归方法遍历二叉树,通过方向值orien记录搜索路径,按照后序遍历顺序进行。程序展示了在给定的二叉树上应用此方法的示例,并提供了插入和遍历操作。

9289

被折叠的 条评论
为什么被折叠?



