二叉树的三种遍历方式

简介: 二叉树的三种遍历方式

二叉树的遍历方式

二叉树有三种遍历方式:

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

在这里插入图片描述
前序遍历(中左右):5 4 1 2 6 7 8
中序遍历(左中右):1 4 2 5 7 6 8
后序遍历(左右中):1 2 4 7 8 6 5

前序遍历

二叉树的前序遍历

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(树的高度)

/**
 * 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;
}

后序遍历

二叉树的后序遍历

    void traversal(TreeNode* cur, vector<int>& vec) {
        if (cur == NULL) return;
        traversal(cur->left, vec);  // 左
        traversal(cur->right, vec); // 右
        vec.push_back(cur->val);    // 中
    }

最后

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

相关文章
|
19天前
|
算法 数据处理 Python
深入理解二叉树:结构、遍历和实现
深入理解二叉树:结构、遍历和实现
深入理解二叉树:结构、遍历和实现
|
9月前
|
存储 算法
二叉树的创建和遍历
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分
70 0
|
10月前
|
存储 算法
二叉树的三序遍历
简要介绍二叉树的三序遍历和重构和代码实现。
|
10月前
|
存储 算法 编译器
探索二叉树:结构、遍历与应用
什么是二叉树? 二叉树是一种由节点组成的层次结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。这种结构使得二叉树在存储和搜索数据时非常高效。二叉树的一个特殊情况是二叉搜索树(Binary Search Tree,BST),它满足左子节点的值小于父节点,右子节点的值大于父节点,这种特性使得在BST中进行查找操作更加高效。
73 0
|
12月前
二叉树四种遍历的实现
二叉树四种遍历的实现
78 0
|
12月前
二叉树的实现(前中后层序四种遍历)
二叉树的实现(前中后层序四种遍历)
39 0
|
机器学习/深度学习 C++ 容器
C++实现的二叉树创建和遍历,超入门邻家小女也懂了
C++实现的二叉树创建和遍历,超入门邻家小女也懂了
75 0
|
机器学习/深度学习 C++ 容器
二叉树创建和遍历(C++实现)
树(Tree)是n(n≥0)个节点的有限集。在任意一棵树中有且仅有一个特定的称为根(Root)的节点;当n>1时,其余节点可分m(m>0)为个互不相交的有限集T1,T2,...,Tm;其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。 二叉树(Binary Tree)是一种特殊的有序树型结构,所有节点最多只有2棵子树。
465 0
二叉树的三种遍历方式
二叉树的三种遍历方式
196 0
二叉树的三种遍历方式