我很难想象我的程序将如何插入元素。 这是老师给我们的代码:
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;
}
}
我遗憾地无法理解和可视化它如何将元素放入树中。根据我的理解,它使用递归划分和征服算法将数组分成两部分并添加元素,但是我不能理解哪个元素成为根。有人可以帮我看一下插入所有东西后树的外观吗?
答案 0 :(得分:0)
使用树时,我喜欢画一个这样的节点:
+--------------+---------------+
| Data |
+--------------+---------------+
| Pointer to | Pointer to |
| left subtree | right subtree |
+--------------+---------------+
当我将一个节点指向另一个节点时,我使用相应的left
或right
指针中的箭头指向新节点。这有助于我可视化树。
有许多资源显示如何绘制树木。
绘制树后,在添加新节点时按箭头操作。