遞迴建立二叉樹
preSq為前序序列;inSq為中序序列;l1、h1分別為前序序列的第一個結點值和最後一個結點值;l2、h2分別為中序序列的第一個結點值和最後一個結點值
BinaryTree create(int preSq[], int inSq[], int l1, int h1, int l2, int h2){
auto root = new TreeNode;
root->data = preSq[l1];
int i = l2, lLen, rLen;
for(;inSq[i] != root->data; i++); //查詢根結點
lLen = i - l2;
rLen = h2 - i;
if(lLen){//遞迴遍歷左子樹
p->lChild = create(preSq, inSq, l1 + 1, lLen + l1, l2, lLen + l2 - 1);
}
if(rLen){
p->rChild = create(preSq, inSq, h1 - rLen + 1, h1, h2 - rlen + 1, h2);
}
return root;
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結