鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zhangjinxuan

[已解决]求二叉树深度,为什么只有80分

[复制链接]
发表于 2022-10-28 19:23:04 | 显示全部楼层
人造人 发表于 2022-10-27 23:48
题目没有说把二叉树建立成什么形式
我想直接在数组中保存结点的形式也是可以的

好像也是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-28 19:36:12 | 显示全部楼层

只想说这个思路对不对?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-28 19:48:21 | 显示全部楼层
傻眼貓咪 发表于 2022-10-28 19:18
应该是没有问题,因为可以得到 80 分,我猜可能不完善吧,或是像人造人大佬说的那样,不够优雅吧

看17楼
7
5 7
4 6
0 0
0 0
2 0
0 0
0 3

这组输入,应该输出4,他的程序输出的是3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-28 21:03:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-30 13:03:27 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-10-30 13:05 编辑


我试试写了代码练习练习:

#include <iostream>
#include <vector>
#include <utility>

using std::vector, std::pair;
vector <pair <unsigned, unsigned>> trees;
auto max = [](unsigned a, unsigned b) -> unsigned { return a > b ? a : b; };

int Dijkstra(unsigned left, unsigned right, unsigned levels = 0) {
        return not(left) and not(right) ? levels : // 左右叶为 0,此为这支根的最深层,返回层数
                not(left) ? Dijkstra(trees[right].first, trees[right].second, levels + 1) : // 左叶为 0
                not(right) ? Dijkstra(trees[left].first, trees[left].second, levels + 1) : // 右叶为 0
                max(
                        Dijkstra(trees[left].first, trees[left].second, levels + 1),
                        Dijkstra(trees[right].first, trees[right].second, levels + 1)); // 比较左右叶节点深度,返回最深层层数
}

using std::cout, std::cin, std::endl;
using std::make_pair;
int main(void) {
        unsigned n, l, r;
        int ans = -(1 << 30);
        trees.push_back(make_pair(0, 0));
        cin >> n;
        while (n--) {
                cin >> l >> r;
                trees.push_back(make_pair(l, r));
        }
        ans = Dijkstra(1, 1);
        cout << ans << endl;
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 14:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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