中易网

假设二叉树采用二叉链存储结构,p为任一给定的节点,设计一个算法输出从根节点到p所指节点之间的路径

答案:1  悬赏:40  
解决时间 2021-01-21 13:19
假设二叉树采用二叉链存储结构,p为任一给定的节点,设计一个算法输出从根节点到p所指节点之间的路径
最佳答案
1. 调用如下方法即可,最终的路径存储在数组array中。
2. 其中返回的pos即为路径中的结点个数。从pos-1位置反序输出数组即为从根到结点的路径
3. array的长度需要大于树的深度,否则可能溢出,调用形式如下:
#define MAX_LEN 100//树的最大深度,假设不大于100
TreeNode *array[MAX_LEN];
int path_len = 0;
findTheRoad(&root, p, array, path_len);//root是树的根结点,p是要找的结点的指针
4. 执行完后可以通过如下方式遍历整个路径:
for(int i = path_len - 1; i >= 0; i--)
{
//输出array[i]即可,如printf("%d ",array[i]->data);
}
5. findTheRoad方法的实现如下:
bool findTheRoad(TreeNode *root, TreeNode *p, TreeNode *array[], int &pos)
{
if (root == NULL)
return false;
if (findTheRoad(root->left, p, array, pos) || findTheRoad(root->right, p, array, pos))
{
array[pos++] = root;
return true;
}
if (root == p)
{
array[pos] = root;
return true;
}
return false;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
尿不出来是什么原因
苹果4开不了机子应该怎么办?
最近晚上老是中度失眠,有一点点动静就睡不着
宫腔镜的检查是怎么做的?
行家说说阳台如何排水
请问冰箱调到几最好?
如何评价支架植入术的效果
ins的图片怎么保存
组织协调能力方面包括哪些类型的面试题
过中不至是什么意思?
40岁女人怎么快速缓解牙疼
大连到金州轻轨的轻轨全程都经过哪些站点
哪位晓得超声刀如何使用,想拜学一下谢谢!
HSEQ是什么意思
呼吸阻抗中度加重是什么意思
推荐资讯
行车记录仪主要有什么作用?
九阳专卖店怎么去啊,我要去那办事
废品紫铜现在多少钱一斤
甘肃阳台护栏哪家比较便宜?要注意什么?
诗音美发地址在什么地方,我要处理点事
经常贴双眼皮贴可以变成双眼皮吗
亲们哪个了解飞利浦护眼灯管哪款好?谁清楚?
谁了解酷乐视x3s怎么去看电视?
新房小户型装修要如何设计?有什么技巧?如何
哪个有竣工验收合格备案表范本?有谁了解?
儿童生长痛一般在那个年龄段?
邻居之间因地方发生争执应该有什么程序到法院
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?