要点:
1.直接改变树的结构
2.排序二叉树在中序遍历的时候是有序的
3.双向链表,需要前后两个指针(可以将Tree的节点作为链表节点)
代码实现:中序的递归实现
void ToList(Tree* pTree ,Tree** pHead,Tree** pEnd ) { if(pTree == NULL ) return; ToList(pTree->pleft,pHead,pEnd); if(*pHead == NULL) { *pHead = pTree; *pEnd = pTree; } else { (*pEnd)->pright = pTree; pTree->pleft = *pEnd; } (*pEnd) = pTree; ToList(pTree->pright,pHead,pEnd); }
本文介绍了一种算法,该算法能将一棵排序二叉树转换为双向链表,同时保持元素的顺序不变。通过递归的方式实现,首先处理左子树,然后更新当前节点的左右指针,最后处理右子树。此方法不破坏原有的树结构。
3万+

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



