鱼C论坛

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

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

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

好像也是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

只想说这个思路对不对?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

看17楼
  1. 7
  2. 5 7
  3. 4 6
  4. 0 0
  5. 0 0
  6. 2 0
  7. 0 0
  8. 0 3
复制代码


这组输入,应该输出4,他的程序输出的是3
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-28 21:03:22 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

  1. #include <iostream>
  2. #include <vector>
  3. #include <utility>

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

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

  15. using std::cout, std::cin, std::endl;
  16. using std::make_pair;
  17. int main(void) {
  18.         unsigned n, l, r;
  19.         int ans = -(1 << 30);
  20.         trees.push_back(make_pair(0, 0));
  21.         cin >> n;
  22.         while (n--) {
  23.                 cin >> l >> r;
  24.                 trees.push_back(make_pair(l, r));
  25.         }
  26.         ans = Dijkstra(1, 1);
  27.         cout << ans << endl;
  28.         return 0;
  29. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-23 08:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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