二叉树转换成双向链表
题目:
将一个搜索二叉树转换成一个有序的双向链表
思路:
具体用递归的思想,用当前函数的指针节点与左子树的双向循环链表的尾节点进行指针的指向更新,当前的指针节点与右子树的双向循环链表的头结点进行指针的指向更新,最后递归函数返回值为当前形成的双向循环链表的尾节点。
具体代码如下:
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
typedef struct node{
node* left;
node* right;
int data;
}node,*pnode, *root;
//层次遍历打印
void printTree(pnode n)
{
queue<pnode> q;
if(n != NULL)
{
q.push(n);
}
while(!q.empty())
{
pnode p = q.front();
q