首页 > 试题广场 >

有一种用左右值表示树形结构的存储格式,其中左右值有一些相当有

[问答题]
有一种用左右值表示树形结构的存储格式,其中左右值有一些相当有用的场景,但是每个节点的左右值需要遍历树形结构计算出来。一个示例:

N[1,12]

|__N[2,7]

| |__N[3,4]

| |__N[5,6]

|__N[8,11]

|__N[9,10]

请完成遍历算法给节点赋左右值。


typedef struct node_t {
    int left;
    int right;
    int n_children;
    (1)____ children;
} NODE;
 
int visit(NODE * node, int value) {
    node->left = value;
    int i = 0;
    for(i=0; in_children; i++) {
       (2)______
}
    (3)______
    return value;
}
 
int initLR(NODE* root) {
    return visit(root, 1);
}


题目有部分错误,正确的树结构应该如下
N[1,12]

|__N[2,7]

|        |__N[3,4]

|        |__N[5,6]

|__N[8,11]

|__N[9,10]
这里的树结构老是显示错误,直接用文字解释吧,9,10节点是8,11节点的子节点

1,数据结构的内容包括,左右值,子节点个数,指向子节点的指针
所以,答案为 struct node_t**
2, 每获得一个值,优先深度遍历,从左到右
value = visit(node->children[i], ++value)
3, 给右值赋值
node->right = ++value
编辑于 2017-05-22 15:13:57 回复(0)