在线程二叉树的文档中,我读到
二叉树遍历的递归和非递归过程都需要将指向所有空闲节点的指针暂时保存在堆栈中。这可以通过使用线程二叉树来避免。
我的问题是
1-在普通二叉树中指针是如何和何时保存在堆栈中的?
2-如何在线程二叉树中的堆栈中不添加指针?
发布于 2014-10-08 17:17:39
( 1)他们在谈论走路。您可以使用recusrive算法(它使用CPU堆栈来为您跟踪),也可以使用迭代方法,保持数据结构堆栈,并管理您自己需要访问的节点。后者可能执行得更好,因为您消除了函数调用的开销,但在概念上往往更难理解。
2)线程树保存如何在树本身中遍历树的信息(而不是必须回溯它们指向树中的下一个位置的空指针),这允许您“以一条直线”遍历树,因此不需要堆栈。
wiki页面在展示这一点方面做得很好。
-A
https://stackoverflow.com/questions/26262011
复制相似问题