在线程二叉树的文档中,我读了
二叉树遍历的递归和非递归过程都要求将所有空闲节点的指针临时保存在堆栈中。使用线程二叉树
可以避免这种情况
我的问题是
1-如何以及何时将指针保存在普通二进制树的堆栈中?
2-如何在螺纹二进制树中的堆栈中添加指针?
答案 0 :(得分:3)
1)他们正在谈论走树。您可以使用recusrive算法(使用CPU堆栈为您跟踪事物),也可以使用迭代方法并保留数据结构堆栈并管理您自己需要访问的节点。后者可能表现更好,因为你消除了函数调用的开销,但它在概念上通常很难理解。
2)一个线程树保存存储树本身如何走树的信息(而不是你必须回溯的NULL指针,它们指向树中要走的下一个位置),这允许你走路树"在一条直线上#34;,所以不需要堆栈。
wiki page 表现得相当不错。
-A