我很難想象如何將我的程序插入元素。 下面是老師給我們的代碼:完美平衡樹中元素的順序
int arr[] = { 3, -2, 11, 7, 12, 1, 4, 5, 33, 13 };
int n = 10;
int cnt = 0;
typedef struct node*po;
struct node {
int data;
po left;
po right;
};
po ibd(int n) {
po holder;
if (n>0) {
int nl = n/2;
int nr = n - nl - 1;
holder = new node;
holder->data = arr[cnt++];
holder->left = ibd(nl);
holder->right = ibd(nr);
return holder;
}
else {
return NULL;
}
}
我遺憾的是無法理解和想象它是如何使的元素在樹中。從我可以理解的它使用遞歸分而治之算法來將數組分成兩部分並添加元素,但是我無法理解哪個元素成爲根。有人可以幫助我想象一下,在插入所有東西后,樹會如何看待?
您應該使用調試器逐步完成代碼並查看它的功能。 – NathanOliver
你應該考慮在這個問題上使用c標籤,而不是C++標籤。 –
當老師的函數簽名是'po ibd(int n)'時,您擔心代碼將來的清晰度 – Drax