题意:不引入新节点,只允许指针操作,实现二元查找树转换为相应双向链表。
10
/ /
6 14
/ / / /
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16
分析:
方法0:转换后的双向链表正好为原树的中序遍历,所以引入一个新指针递归遍历即可。
方法1:从10节点看,它的前趋、后继分别是左子树的最右节点与右子树的最左节点,所以找到前趋与后继保存,递归实现即可。
代码中验证Btree建立成功分别用先序、中序与后序来遍历。然后又用到了Btree拷贝方法验证两种tree2list方法。
C++实现:
运行结果: