吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1770|回复: 6
收起左侧

[其他转载] 【c++】【笔记】数据结构算法的练习 <输出根节点到叶节点的最长的路径>

  [复制链接]
false_554 发表于 2020-11-17 16:20
发贴记录一下自己数据结构练习的代码~

代码实现功能:输出根节点到叶节点的最长的路径(输出节点值与路径长度)

关键代码:
//输出根节点到叶节点的最长的路径(输出节点值与路径长度)(deepth初始为1)
//path储存当前递归得到的路径,deepth储存当前递归得到的路径长,longestpath储存当前最长路径上每一个节点值,longestpath[0]储存当前最长路径长度
void PrintLongestRoad(TreeNode *tree, int path[], int &deepth,int longestpath[]) {
    if (tree != NULL) {
        //递归找到叶子节点,将叶子节点加入路径,将此路径与最大路径比较
        if (tree->lchild == NULL && tree->rchild == NULL) {
            path[deepth] = tree->value;
            //如果出现了长度更长的路径,则更新当前最长路径
            if (deepth > longestpath[0]) {       
                longestpath[0] = deepth;
                for (int i = 1; i <= deepth; i++) {
                    longestpath[i] = path[i];
                }
            }
        }
        else {
            path[deepth++] = tree->value;
            PrintLongestRoad(tree->lchild, path, deepth, longestpath);
            PrintLongestRoad(tree->rchild, path, deepth, longestpath);
            deepth--;//从当前层出发所找到的叶子节点的路径比较完毕,返回上一层,再从上一层出发寻找叶子节点
        }
    }
}``


数据测试:
int main(){
        BinaryTree *tree = creatBinaryTree();
        int num = 1;
        int a[20];
        int b[20];
        insertNode(tree, 1);
        insertNode(tree, 32);
        insertNode(tree, 0);
        insertNode(tree, 3);
        insertNode(tree, 20);
        insertNode(tree, 40);
        insertNode(tree, 2);
        //insertNode(tree, 4);
        insertNode(tree, 10);
        insertNode(tree, 25);
        insertNode(tree, 35);
        insertNode(tree, 23);
        PrintLongestRoad(tree->root, a, num, b);
        for (int i = 1; i <= b[0]; i++) {
            cout << b[i] << "\t";
        }
}


运行结果:


生成的二叉树(有点丑)

生成的二叉树(有点丑)

最长路径

最长路径

免费评分

参与人数 3吾爱币 +6 热心值 +3 收起 理由
hxw0204 + 1 + 1 我很赞同!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
dgy + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

gms 发表于 2020-11-17 17:05
收藏学习
亦诺Sion 发表于 2020-11-17 17:08
Gaho2002 发表于 2020-11-17 17:11
头像被屏蔽
tlf 发表于 2020-11-17 17:14
提示: 作者被禁止或删除 内容自动屏蔽
Insist_2020 发表于 2020-11-17 18:16
好好学习!!!!!!!!!!!!
BY丶显示 发表于 2020-11-17 18:31
学习一下思路。谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表