经典指数          
原因
1741
浏览数
0
收藏数
 

有一种用左右值表示树形结构的存储格式,其中左右值有一些相当有用的场景,但是每个节点的左右值需要遍历树形结构计算出来。一个示例: 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); }

     举报   纠错  
 
切换
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
 
切换
撰写答案