数据结构——二叉树的最长路径(算法)
发布时间
阅读量:
阅读量
题目:
确定任意二叉树第一条最长路径的具体长度,并输出该路径上的各个节点值。
描述:
设每个二叉树结点的数据域仅包含一个字符,在先序遍历的基础上构建其双亲链表结构,请设计算法找出该二叉树第一条最长路径的具体信息。
一个行中的数据属于二叉树的一种先序遍历序列,在该序列中当序列中的元素是‘#’时,则代表相应的节点为空。
输出结果包括两部分内容:第一部分输出结果是该二叉树的最大路径长度数值;第二部分则列出沿着这条最长路径从根节点到叶子节点的所有节点值。
解决思路采用递归算法策略。
函数longest_path(BiTree T, int *path, int &len, int *longestpath, int &longest_len)
**//字符数组path用于每层循环记录当前路径
**//字符数组longestpath用于存储最长路径信息
**//整型引用变量longest_len用于记录最长路径长度
//整型引用变量len用于记录当前路径长度
在代码运行过程中: _遇到的是非叶子结点, 这条路径继续 path[len++]T->data; 并再次调用该函数, 这个节点的左子树, 右子树;
当遇到叶子节点时,则表示当前这条路径终止,并将其与之前记录的最大路径进行比较;如果能够更新为更大的值,则更新最长路径。
求最长路径算法(核
全部评论 (0)
还没有任何评论哟~
