【手把手带你刷好题】—— 33.二叉树的前序+中序+后序遍历(三道力扣)

举报
安然无虞 发表于 2022/05/27 00:12:23 2022/05/27
【摘要】 目录 原题一:二叉树的前序遍历 原题二:二叉树的中序遍历 原题三:二叉树的后序遍历 结语 【前言】 今天是刷题打卡第33天! 加油啦。 原题一:二叉树的前序遍历 题目描述: 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例:  ...

目录

原题一:二叉树的前序遍历

原题二:二叉树的中序遍历

原题三:二叉树的后序遍历

结语


【前言】

今天是刷题打卡第33天!

加油啦。

原题一:二叉树的前序遍历

题目描述:

给你二叉树的根节点 root ,返回它节点值的 前序 遍历

示例:

 


  
  1. 输入:root = [1,null,2,3]
  2. 输出:[1,2,3]

 代码执行:


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. /**
  10. * Note: The returned array must be malloced, assume caller calls free().
  11. */
  12. int* preorderTraversal(struct TreeNode* root, int* returnSize){
  13. int* arr = (int*)malloc(sizeof(int) * 100);
  14. *returnSize = 0;
  15. PrevOrder(root, arr,returnSize);
  16. return arr;
  17. }
  18. void PrevOrder(struct TreeNode* root, int* arr, int* returnSize)
  19. {
  20. if(root == NULL)
  21. {
  22. return;
  23. }
  24. arr[(*returnSize)++] = root->val;
  25. PrevOrder(root->left, arr, returnSize);
  26. PrevOrder(root->right, arr, returnSize);
  27. }

原题二:二叉树的中序遍历

题目描述:

给定一个二叉树的根节点 root ,返回它的 中序 遍历。

示例:


  
  1. 输入:root = [1,null,2,3]
  2. 输出:[1,3,2]

 代码执行:


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. /**
  10. * Note: The returned array must be malloced, assume caller calls free().
  11. */
  12. int* inorderTraversal(struct TreeNode* root, int* returnSize){
  13. int* arr = (int*)malloc(sizeof(int)*100);
  14. *returnSize = 0;
  15. InOrder(root, arr,returnSize);
  16. return arr;
  17. }
  18. void InOrder(struct TreeNode* root, int* arr, int* returnSize)
  19. {
  20. if(root == NULL)
  21. {
  22. return;
  23. }
  24. InOrder(root->left, arr,returnSize);
  25. arr[(*returnSize)++] = root->val;
  26. InOrder(root->right, arr,returnSize);
  27. }

原题三:二叉树的后序遍历

题目描述:

给定一个二叉树,返回它的 后序 遍历。

示例:


  
  1. 输入: [1,null,2,3]
  2. 1
  3. \
  4. 2
  5. /
  6. 3
  7. 输出: [3,2,1]

代码执行:


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. /**
  10. * Note: The returned array must be malloced, assume caller calls free().
  11. */
  12. int* postorderTraversal(struct TreeNode* root, int* returnSize){
  13. int* arr = (int*)malloc(sizeof(int)*100);
  14. *returnSize = 0;
  15. PostOrder(root, arr, returnSize);
  16. return arr;
  17. }
  18. void PostOrder(struct TreeNode* root, int* arr, int* returnSize)
  19. {
  20. if(root == NULL)
  21. {
  22. return;
  23. }
  24. PostOrder(root->left,arr,returnSize);
  25. PostOrder(root->right, arr,returnSize);
  26. arr[(*returnSize)++] = root->val;
  27. }

结语

今天是刷题打卡第33天!

加油吧少年。

 

文章来源: bit-runout.blog.csdn.net,作者:安然无虞,版权归原作者所有,如需转载,请联系作者。

原文链接:bit-runout.blog.csdn.net/article/details/121622528

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。