码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • lc--655:输出二叉树


    655. 输出二叉树 - 力扣(LeetCode)https://leetcode.cn/problems/print-binary-tree/

     

    分析:(列数和行数都已经告知了,只需要求出height即可。) 

    1. class Solution
    2. {
    3. public:
    4. int calDepth(TreeNode* root)
    5. {
    6. int h = 0;
    7. if (root->left)
    8. {
    9. h = max(h, calDepth(root->left) + 1);
    10. }
    11. if (root->right)
    12. {
    13. h = max(h, calDepth(root->right) + 1);
    14. }
    15. return h;
    16. }
    17. void dfs(vector>& res, TreeNode* root, int r, int c, const int& height) {
    18. res[r][c] = to_string(root->val);
    19. if (root->left)
    20. {
    21. dfs(res, root->left, r + 1, c - (1 << (height - r - 1)), height);
    22. }
    23. if (root->right)
    24. {
    25. dfs(res, root->right, r + 1, c + (1 << (height - r - 1)), height);
    26. }
    27. }
    28. vector> printTree(TreeNode* root)
    29. {
    30. int height = calDepth(root);
    31. int m = height + 1;
    32. int n = (1 << (height + 1)) - 1;
    33. vector> res(m, vector(n, ""));
    34. dfs(res, root, 0, (n - 1) / 2, height);
    35. return res;
    36. }
    37. };

     

    1. class Solution
    2. {
    3. public:
    4. int calDepth(TreeNode* root)
    5. {
    6. int res = -1;
    7. queue q;
    8. q.push(root);
    9. while (!q.empty())
    10. {
    11. int len = q.size();
    12. res++;
    13. while (len)
    14. {
    15. len--;
    16. auto t = q.front();
    17. q.pop();
    18. if (t->left)
    19. {
    20. q.push(t->left);
    21. }
    22. if (t->right)
    23. {
    24. q.push(t->right);
    25. }
    26. }
    27. }
    28. return res;
    29. }
    30. vector> printTree(TreeNode* root)
    31. {
    32. int height = calDepth(root);
    33. int m = height + 1;
    34. int n = (1 << (height + 1)) - 1;
    35. vector> res(m, vector(n, ""));
    36. queueint, int>> q;
    37. q.push({root, 0, (n - 1) / 2});
    38. while (!q.empty())
    39. {
    40. auto t = q.front();
    41. q.pop();
    42. int r = get<1>(t), c = get<2>(t);
    43. res[r][c] = to_string(get<0>(t)->val);
    44. if (get<0>(t)->left)
    45. {
    46. q.push({get<0>(t)->left, r + 1, c - (1 << (height - r - 1))});
    47. }
    48. if (get<0>(t)->right)
    49. {
    50. q.push({get<0>(t)->right, r + 1, c + (1 << (height - r - 1))});
    51. }
    52. }
    53. return res;
    54. }
    55. };

    待手撕(。。。。)

  • 相关阅读:
    gitlab添加ssh公钥
    联邦学习开源框架FATE架构
    工程材料期末考试试卷
    天池Python练习05-列表操作
    Ubuntu 20.04部署Promethues
    [machine learning]误差分析,模型分析
    Java--异常/Exception--try/catch/finally的return顺序
    linux系统延迟任务
    Unsupervised Embedding Learning via Invariant and SpreadingInstance Feature
    SwiftUI 视图“毁坏性”和“非毁坏性”刷新的应用场景
  • 原文地址:https://blog.csdn.net/zjjaibc/article/details/126460261
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号