前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二叉树的三种遍历方式

二叉树的三种遍历方式

作者头像
秋名山码神
发布2022-12-13 14:42:32
2390
发布2022-12-13 14:42:32
举报
文章被收录于专栏:码神随笔

文章目录


二叉树的遍历方式

二叉树有三种遍历方式:

前序遍历:打印-左-右 中序遍历:左-打印-右 后序遍历:左-右-打印

在这里插入图片描述
在这里插入图片描述

前序遍历(中左右):5 4 1 2 6 7 8 中序遍历(左中右):1 4 2 5 7 6 8 后序遍历(左右中):1 2 4 7 8 6 5

前序遍历

二叉树的前序遍历

代码语言:javascript
复制
void preorder(struct TreeNode* root, int* res, int* resSize) {
    if (root == NULL) {
        return;
    }
    res[(*resSize)++] = root->val;
    preorder(root->left, res, resSize);
    preorder(root->right, res, resSize);
}

int* preorderTraversal(struct TreeNode* root, int* returnSize) {
    int* res = malloc(sizeof(int) * 2000);
    *returnSize = 0;
    preorder(root, res, returnSize);
    return res;
}

中序遍历

我们来看这个题目:二叉树的中序遍历

题目要求的是中序遍历,那就按照 左-打印-右这种顺序遍历树就可以了,递归函数实现 终止条件:当前节点为空时 函数内:递归的调用左节点,打印当前节点,再递归调用右节点

时间复杂度O(N),空间复杂度O(树的高度)

代码语言:javascript
复制
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
void Traversal(struct TreeNode* root,int *returnNum,int* returnSize )
{
    if(root==NULL)
    {
        return; 
    }
    //左
    Traversal(root->left,returnNum,returnSize);

    //根
    returnNum[*returnSize]   = root->val;       
    *returnSize = *returnSize + 1;

    //右
    Traversal(root->right,returnNum,returnSize);
}

int* inorderTraversal(struct TreeNode* root, int* returnSize)
{
    //树中节点数目在范围 [0, 100] 内
    int *returnNum = (int *)malloc(sizeof(int)*101);
    *returnSize = 0;
    if(root == NULL)
    {
        return NULL;
    }
    Traversal(root,returnNum,returnSize);
    return returnNum;
}

后序遍历

二叉树的后序遍历

代码语言:javascript
复制
    void traversal(TreeNode* cur, vector<int>& vec) {
        if (cur == NULL) return;
        traversal(cur->left, vec);  // 左
        traversal(cur->right, vec); // 右
        vec.push_back(cur->val);    // 中
    }

最后

以上就是二叉树的三种遍历方式有学到,欢迎关注+点赞一下!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 二叉树的遍历方式
    • 前序遍历
      • 中序遍历
        • 后序遍历
        • 最后
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档