二叉树的遍历

二叉树的遍历

二叉树的遍历是指按照一定顺序访问二叉树中的所有节点的过程。常见的二叉树遍历方式包括前序遍历、中序遍历和后序遍历,以及层次遍历。

  1. 前序遍历(Preorder Traversal):先访问根节点,然后递归地前序遍历左子树,最后递归地前序遍历右子树。根-左-右的顺序。
  2. 中序遍历(Inorder Traversal):先递归地中序遍历左子树,然后访问根节点,最后递归地中序遍历右子树。左-根-右的顺序。
  3. 后序遍历(Postorder Traversal):先递归地后序遍历左子树,然后递归地后序遍历右子树,最后访问根节点。左-右-根的顺序。
  4. 层次遍历(Level Order Traversal):从上到下,从左到右逐层访问树的节点,通常使用队列实现。

这些遍历方式都可以通过递归或者迭代的方法来实现。不同的遍历方式在应用场景上有不同的用途,可以用于搜索、排序、构建表达式树等不同的问题。

相关遍历的结果展示:
二叉树的遍历_第1张图片二叉树的遍历代码实现
二叉树的遍历_第2张图片具体的代码演示:

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 

// 二叉树的节点
typedef struct BINARYNODE {
    // 数据
    char ch;
    // 二叉树的左节点
    struct BINARYNODE* lchild;
    // 二叉树的右节点
    struct BINARYNODE* rchild;
}BinaryNode;
// 二叉树的遍历函数
void Recursion(BinaryNode* root) {
    if (root == NULL) {
        return;
    }
    
    /*
        先序遍历:
            //先访问根节点
            printf("%c", root->ch);
            // 遍历左子树
            Recursion(root->lchild);
            // 遍历右子树
            Recursion(root->rchild);
    */
    
    /*
      中序遍历:
            // 遍历左子树
            Recursion(root->lchild);
            //先访问根节点
            printf("%c", root->ch);
            // 遍历右子树
            Recursion(root->rchild);
    */
    
    /*
      后续遍历
    */
    // 遍历左子树
    Recursion(root->lchild);
    // 遍历右子树
    Recursion(root->rchild);
    //先访问根节点
    printf("%c", root->ch);
}

void CresteBinaryTree() {
    // 将节点创建出来
    BinaryNode node1 = { 'A',NULL,NULL};
    BinaryNode node2 = { 'B',NULL,NULL };
    BinaryNode node3 = { 'C',NULL,NULL };
    BinaryNode node4 = { 'D',NULL,NULL };
    BinaryNode node5 = { 'E',NULL,NULL };
    BinaryNode node6 = { 'F',NULL,NULL };
    BinaryNode node7 = { 'G',NULL,NULL };
    BinaryNode node8 = { 'H',NULL,NULL };
    // 建立节点之间的关系
    node1.lchild = &node2;
    node1.rchild = &node6;
    node2.rchild = &node3;
    node4.lchild = &node4;
    node3.rchild = &node5;
    node6.rchild = &node7;
    node7.lchild = &node8;
    // 对二叉树进行遍历:先序遍历
    Recursion(&node1);
    printf("\n");
}

int main()
{
    CresteBinaryTree();
    system("pause");
    return 0;

}

先序遍历的运行结果展示:
二叉树的遍历_第3张图片中序遍历的运行结果
二叉树的遍历_第4张图片后续遍历的运行结果
二叉树的遍历_第5张图片

你可能感兴趣的:(c语言,visual,code,数据结构,二叉树,二叉树遍历)