分享一个数据结构算法的机试题
前几天的一个机试题,记忆有点模糊了,可能有点不一样,但是大概就是这样的:
原有的数据结构:
$array = array(
'a' => array(
'a1' => array(
'a1_1' => array(
array('a1_1_1')
),
'a1_2' => array()
),
'a2' => array(
array('a2_1'),
array('a2_2'),
array('a2_3')
)
),
'b' => array()//...n+1
);
要求是这样的:
写出一个函数,将上述数据结构,改变为下面要求的数据结构。
a
在$arr
数组当中,表示有多个这样的数据结构需要统计。a
下面有 2 个直接下级,分别是a1
,a2
。a1
下面有两个直接下级分别是a1_1
,a1_2
。a1_1
下面有 1 个下级,为a1_1_1
。a2
下面有三个下级分别是a2_1
,a2_2
,a2_3
。- 现要求,
a
显示直接下级数为 2,间接下级数为 6,合计下级数为 8。a1
显示直接下级数为 2,间接下级数为 1 ,合计下级数为 3 ...以此类推。a2
直接下级为 3,间接下级为 0,合计下级数 3。
最后的数据结构是这样的:
$result = array(
'a' => array(
'direct_num' => 2,
'indirect_num' => 6,
'count_num' => 8,
'a1' => array(
'direct_num' => 2,
'indirect_num' => 1,
'count_num' => 3,
'a1_1' => array(
'direct_num' => 1,
'indirect_num' => 0,
'count_num' => 1,
array(
'direct_num' => 0,
'indirect_num' => 0,
'count_num' => 0,
'a1_1_1',
)
),
'a1_2' => array()
),
'a2' => array(
'direct_num' => 3,
'indirect_num' => 0,
'count_num' => 3,
array('a2_1'),//省略
array('a2_2'),//省略
array('a2_3')//省略
)
),
'b' => array()//...n+1
);
提示为 递归
。
要求用递归写?
@altwei 是的,深度不确定,我也试了引用,技术菜了没做出来。
@仰望 我感觉你的原数据是错的,我改了下
@仰望 最后结果