原文:点击这里
用递归方法将一个按照层次遍历顺序存放在数组的二叉树转换为按照二叉链表存储的二叉树。
#include<iostream>
#include<cstring>
char BT[] = "ABCD#EF";
int n = strlen(BT);
using namespace std;
typedef struct TNode{
char data;
TNode *lchild, *rchild;
TNode(char d):data(d),lchild(NULL),rchild(NULL){}//构造函数
~TNode(){delete lchild;delete rchild;}
};
TNode * Ttransform(TNode*root,int k) {
if(k>n||BT[k-1]=='#'){
return NULL;
}
else{
root=new TNode(BT[k-1]);
root->lchild=Ttransform(root->lchild,2*k);
root->rchild=Ttransform(root->rchild,2*k+1);
}
return root;
}
void inorder(TNode*root) {
if(root!=NULL){
inorder(root->lchild);
cout<<root->data<<" ";
inorder(root->rchild);
}
}
int main(){
TNode *root=new TNode('a');
root=Ttransform(root,1);
inorder(root);
return 0;
}